Python pygame:ValueError:要解压缩的值太多(预期为2个)

Python pygame:ValueError:要解压缩的值太多(预期为2个),python,pygame,Python,Pygame,我目前正在学习Python和pygame,试图为射击游戏制作一个示例模拟 通常,在处理导弹或子弹投射时,我听说使用列表是控制移动的最常用方法 像 我试图提供更多关于子弹的信息,比如“武器种类”,但结果是 ValueError:要解包的值太多(应为2个)。 这就是我试图做的:添加更多关于列表元素的信息,我想改变战斗机使用的武器种类 下面的代码是我认为有效的 missile1 = pygame.image.load('missile1.png') missile2 = pygame.image.lo

我目前正在学习Python和pygame,试图为射击游戏制作一个示例模拟

通常,在处理导弹或子弹投射时,我听说使用列表是控制移动的最常用方法

我试图提供更多关于子弹的信息,比如“武器种类”,但结果是

ValueError:要解包的值太多(应为2个)。

这就是我试图做的:添加更多关于列表元素的信息,我想改变战斗机使用的武器种类

下面的代码是我认为有效的

missile1 = pygame.image.load('missile1.png')
missile2 = pygame.image.load('missile2.png')
missileX = 100
missileY = 100
if weapon_num % 2 == 1:
    missile = missile1
if weapon_num % 2 == 0:
    missile = missile2
missileXY.append([missile1X, missile1Y, missile])

问题是,

  • 有没有可能再加一个像上面那样的

  • 有没有其他方法来执行我想要的

  • 我还可能面临其他警告吗


  • 正如例外情况所说,解包列表时存在一个问题。内部列表中只需要两个元素,但您提供了三个。如以下文件最后一段所述:

    序列解包要求等号左侧的变量数量与序列中的元素数量相同

    在这行代码中

    对于bx,通过导弹1XY:
    
    。。。您正试图解包内部列表(在本例中为
    [missile1X,missile1Y,飞弹]
    ,其中包含三个元素)。解释器希望列表正好包含两个元素,因此引发异常

    有没有可能再加一个像上面那样的

    是的,您只需修改代码即可解包列表,例如:

    对于bx,由,键入Missel1xy:
    drawObject(类型、bx、依据)
    
    有没有其他方法来执行我想要的

    如果需要的话,理论上可以用迭代顶部列表的相同方式迭代内部列表。这样你就可以接受任意数量的元素,但这需要对程序逻辑进行进一步的修改,我相信这会使事情变得比任何事情都复杂

    我还可能面临其他警告吗


    我建议您通读上的Python文档。此外,如果您在学习过程中从其他地方获取代码,最好在使用之前尝试完全阅读和理解代码,这样在尝试解决意外行为时可能会让您头疼。祝你学习顺利

    首先感谢您的建议和留下一些评论。在不久的将来,我会使用pygame.sprite.sprite,但我还没有开始使用它(还没有开始)
    missile1 = pygame.image.load('missile1.png')
    missile2 = pygame.image.load('missile2.png')
    missileX = 100
    missileY = 100
    if weapon_num % 2 == 1:
        missile = missile1
    if weapon_num % 2 == 0:
        missile = missile2
    missileXY.append([missile1X, missile1Y, missile])