IndexError但我不知道有什么问题

时间:2017-04-04 12:11:01

标签: python

opponent = int(opponent[0])

我只想要列表'对手'中的第一个元素,因此我编码:

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

我用它来计算我的其他一个列表中的'对手'的数量。

{{1}}
  

它说我的提交引发了一个类型为IndexError的异常   线。 'opponent = int(opponent [0])'。

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

2 个答案:

答案 0 :(得分:3)

您的对手列表名为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

答案 1 :(得分:0)

我不确定那里发生了什么,但我怀疑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

希望这有帮助! :)