【问题标题】:How to fix a : TypeError 'tuple' object does not support item assignment如何修复:TypeError 'tuple' 对象不支持项目分配
【发布时间】:2013-10-20 17:14:34
【问题描述】:

本教程的以下代码片段: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。但是在游戏中什么都没有发生。

有人知道我能做什么吗?

谢谢。

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    改变这个

    badguy[0]-=7
    

    进入这个

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

    或者,如果您可以将badguy 保留为list,那么甚至不要使用元组,您可以使用当前代码(增加了使用列表而不是元组的变化)

    【讨论】:

    • 我的游戏中没有任何动作,这些变化
    • @Pro-grammer:那么,您还有其他问题。我提出的解决方案可以解决您的tuple 问题。如果您有其他问题,我建议您再发一个帖子
    • 它可能对你没有多大帮助,但对我来说很棒! OSGeo GDAL GetGeoTransform 返回一个元组,我需要通过 x -= 0.1, y += 0.1 对其进行调整,然后将其转换回 SetGeoTransform 的元组。正是我所需要的——两端都有一个元组,中间是可编辑的!
    【解决方案2】:

    另一种解决方案是代替

    badguy[0] -= 7
    

    要做的事

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

    这将创建一个新元组,其中包含第零个元素中的更新值。

    【讨论】:

      【解决方案3】:

      你可以做一个 np.copy() 和她一起工作。

      badguy_copy = np.copy(badguy)
      

      【讨论】:

        猜你喜欢
        • 2020-10-30
        • 1970-01-01
        • 2023-02-06
        • 2016-07-31
        • 2014-02-18
        • 2017-03-26
        • 2021-08-05
        • 1970-01-01
        相关资源
        最近更新 更多