在Python中在列表和字典之间切换?

2024-10-04 03:26:48 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的游戏代码中,用户在一个网格中移动,如果他们落在宝箱上,他们的硬币收藏量会增加10。然而,一旦你在同一个宝箱上着陆3次,它就会变成一个强盗,并将你的硬币收藏设置为0。我很难做到这一点,因为当用户首先确定列表中有多少个值时,很难计算列表中的单个值。这是我目前的代码:

        TreasureCoords[(x,y)] = 0
        Visits = TreasureCoords.get((x,y), None)
        if Visits is None:
            pass # Nothing happens
        elif Visits > 3:
            print("Uh oh there's a bandit! Your coin collection is now 0.")
            CoinCollection = 0
        else:
            print("You have landed on a treasure chest! You can visit it %i more times before it becomes a bandit." % (2 - visits))
            CoinCollection += 10
            TreasureCoords[(x,y)] += 1

但是,在我的代码中实现时,会出现以下错误: 财务坐标[(x,y)]=0 TypeError:列表索引必须是整数,而不是元组 我相信这是因为上面的代码使用了TreaseCoords作为字典,而实际上它是一个充满了x和y值的列表,宝箱所在的位置。我不相信我可以只是把我的TreaseCoords和BanditeCoords改成字典,因为值是随机设置的,值的数目是由用户设置的,所以我不知道你会如何设置一个键或任何东西。我该怎么办?你知道吗


Tags: 代码用户noneyou列表isit硬币
1条回答
网友
1楼 · 发布于 2024-10-04 03:26:48

这个错误是由于元组而发生的,解决这个问题的最好方法可能是使用字典,因为您的代码的其余部分看起来甚至不需要更改为字典。你知道吗

事实上,Visits = TreasureCoords.get((x,y), None)行使用了get方法,该方法甚至不适用于列表,因此这使我认为该代码无论如何都适用于字典。你知道吗

实际上,您可以向字典中添加新项:

dict = {"Key1": 1}
dict[(1, 2)] = 42
print(dict[(1, 2)]) # prints 42

你也应该读一下:https://learnpythonthehardway.org/book/ex39.html

相关问题 更多 >