2013-10-12 50 views
5

从本教程下面的代码片段: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' object does not support item assignment

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

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

我转换的元组的列表,以便我们能减7但在比赛中没有任何反应。

有没有人知道我能做什么?

谢谢。

回答

17

更改此

badguy[0]-=7 

这个

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

另外,如果能留下badguylist,那么甚至不使用的元组,你会被罚款与您当前的代码(与使用列表而不是元组添加更改)

+0

在我的游戏中,我没有任何动作,这些变化 –

+0

@ Pro-grammer:然后,你还有其他问题。我提出的解决方案需要处理你的'元组'问题。如果你有不同的问题,我建议做另一个帖子 – inspectorG4dget

+0

好吧,谢谢你的帮助到目前为止:-) –

1

另一种解决方案是代替

badguy[0] -= 7 

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

这与零元素的更新值共创一个新的记录。

相关问题