如何在Python中解决“'int'对象不可下标”

时间:2020-07-04 00:41:22

标签: python pygame

collision = iscollision(firex, firey, cactusx[i], cactusy[i], )
if collision:
    firex = 150
    fire_state = "ready"
    score += 1
    print(score)
    cactusx = random.randint(400, 736)
    cactusy = random.randint(36, 450)
for i in range(num_of_cactus):
    cactusx[i] += cactusx_change[i]
    cactusx_change[i] = -4
    collision = iscollision(firex, firey, cactusx[i], cactusy[i], )

我试图制作一个pygame,但有时会出现此错误, 这些是一些代码行,这些错误会显示出来。它位于cactusx[i] += cactusx_change[i]行。

3 个答案:

答案 0 :(得分:1)

random.randint(400, 736)返回一个不可订阅的Python int eger。

您没有指定cactusx_change是什么或它来自何处,因此我们无法对此进行判断。

答案 1 :(得分:0)

根据Python文档:

  • random.randint(a, b):返回随机的整数 N,以使a <= N <= b

将catcusx设置为random.randint(400, 736)时,就是将其设置为整数值。在它的正下方,您将cactusx当作数组下标,因为它是整数而无法执行。

解决方案取决于您要完成的工作,但不能对整数下标。

答案 2 :(得分:0)

如果检测到碰撞,则要更改仙人掌的位置,这会导致随机碰撞。因此,您必须更改cactusx[i]cactusy[i]

cactusx = random.randint(400, 736)
cactusy = random.randint(36, 450)

cactusx[i] = random.randint(400, 736)
cactusy[i] = random.randint(36, 450)