如何修复:TypeError'tuple'对象不支持项目赋值

时间:2013-10-12 19:19:58

标签: python pygame

本教程的以下代码片段:http://www.raywenderlich.com/24252/beginning-game-programming-for-teens-with-python

for badguy in badguys:
        if badguy[0]<-64:
            badguys.pop(index)
        badguy[0]-=7
        index+=1
    for badguy in badguys:
        screen.blit(badguyimg, badguy)

给了我一个:

  

TypeError:'tuple'对象不支持项目分配

我明白这可能是因为badguy是一个元组。这意味着它是不可变的(你不能改变它的值)我尝试了以下内容:

t= list(badguy)
        t[0]= t[0]-7
        i+=1

我将元组转换为列表,因此我们可以减去7.但在游戏中没有任何反应。

有人知道我能做什么吗?

感谢。

3 个答案:

答案 0 :(得分:20)

更改此

badguy[0]-=7

进入这个

badguy = list(badguy)
badguy[0]-=7
badguy = tuple(badguy)

或者,如果您可以将badguy作为list,那么甚至不要使用元组,您可以使用当前代码(添加使用列表而不是元组的更改) )

答案 1 :(得分:2)

另一种解决方案是

badguy[0] -= 7

要做

badguy = (badguy[0] - 7,) + badguy[1:]

这将与第0个元素中的更新值一起创建一个新元组。

答案 2 :(得分:0)

您可以执行np.copy()并与她一起工作。

badguy_copy = np.copy(badguy)