【发布时间】:2020-07-03 20:13:59
【问题描述】:
我在过去一周只学习了编码和 Python,所以这个问题似乎很明显。
我正在尝试创建一个纸牌游戏。我已经创建了我的卡片组,现在我正在尝试创建一个函数来从卡片组中移除一张卡片并测试我正在打印出卡片组。
但是,当我从牌组中随机取出一张牌,然后尝试打印牌组中剩余牌的属性时,我收到错误消息。 我创建了一个名为 Card 的类,其属性为 name、value、suit 我取出了部分很长且不完全相关的代码。 我有一个名为 the_deck 的所有卡片列表 我试图用
来解释错误"如果 the_deck[i] 为无:继续:"
但这似乎不起作用。 这是我的代码,然后是错误。
def pick_a_card():
a = random.choice(the_deck)
print(a.name + " of " + a.suit)
the_deck = the_deck.remove(a)
i = 0
while i <= 51:
if the_deck[i] is None:
continue
else:
print(the_deck[i].name + " of " + the_deck[i].suit)
i+=1
pick_a_card()
我得到的错误是
TypeError: 'NoneType' 对象不可下标
这个错误来自于从牌组中取出一张牌。该函数的其余部分没有错误。
我该如何解决这个问题? 谢谢。
【问题讨论】:
-
remove是就地操作。不要将结果分配回the_deck,因为它返回None。 -
这个错误意味着
the_deck是None,而不是the_deck[i]是None。 -
@alaniwi 那么我应该如何正确地从 the_deck 中永久移除一张卡片?
-
仅使用
the_deck.remove(a)。因此,删除the_deck = -
@Ronald 那会永久改变
the_deck吗?我早些时候尝试过这样做,但它似乎并没有永久改变它。也许我错了。