繁体   English   中英

IndexError但我不知道怎么了

[英]IndexError but I don't know what is wrong

opponent = [1, 1, 1, 1, 1, 1]

我只想要列表“对手”中的第一个元素,因此我编写了代码:

opponent = int(opponent[0])

我用它来计算其他列表之一中“对手”的数量。

if wongames.count(opponent) == 2:
...blablabla

它说我的提交在该行引发了IndexError类型的异常。 “对手= int(对手[0])”。

为什么是这样? 我该如何解决? :(

您的反对者列表称为opponent ,稍后在您的代码中您将执行以下操作:

opponent = int(opponent[0])

覆盖先前的opponent列表,因此现在opponent名称改为引用整数。

下次您再次执行相同的操作:

opponent = int(opponent[0])

您正在尝试访问整数的[0]索引,该索引显然无法正常工作,因为无法对整数进行索引。

解决方案:只需为这两个变量使用不同的名称。 我会打电话给清单上的opponents

opponents = [1, 1, 1, 1, 1]
opponent = opponents[0]

注意,由于它们已经是列表中的整数,因此您不需要int() 仅要将int()从一种类型转换为另一种类型,例如,如果它是字符串'0'而不是整数0则只需使用int()

我不确定那里发生了什么,但是我怀疑indexError是因为您要分配相同的opponent变量以从列表opponent选择元素

如果您在第二次迭代中运行此代码段,则变量opponent 不再是列表 ,这也许是导致错误的原因。 尝试更改将值分配给新变量的操作。

opponent = [1, 1, 1, 1, 1, 1]

## Code block
opponent = int(opponent[0]) # Now opponent is not a list, just a number
if wongames.count(opponent) == 2:
    # do something

如果代码块第二次执行,则会发生错误。 尝试将代码更改为以下内容,

opponent = [1, 1, 1, 1, 1, 1]
first_opponent = int(opponent[0]) 
if wongames.count(first_opponent) == 2:
    # do something

希望这可以帮助! :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM