【发布时间】:2020-09-27 08:57:29
【问题描述】:
我有两个函数可以在拼字游戏类型的游戏中迭代字典。我不明白为什么一个不起作用,而另一个则使用测试输入。我使用 pythontutor.com 试图找出其中一个没有得到正确输出的原因。 这个函数给出正确的输出
def updateHand(hand, word):
newhand = hand.copy()
for letter in word:
if letter in newhand.keys():
newhand[letter] -= 1
return newhand
print(updateHand({'h': 1, 'e': 1, 'l': 2, 'o': 1}, 'hello'))
print(updateHand({'a': 1, 'q': 1, 'l': 2, 'm': 1, 'u': 1, 'i': 1},'quail'))
正确的输出:
{'h': 0, 'e': 0, 'l': 0, 'o': 0}
和
{'a': 0, 'q': 0, 'l': 1, 'm': 1, 'u': 0, 'i': 0}
这个函数没有给出正确的输出,我想知道为什么:
def updateHand(hand, word):
newhand = hand.copy()
for letter in word:
newhand[letter] = hand.get(letter, 0) - 1
return newhand
这是此函数的输出,“l”值应为零。
{'h': 0, 'e': 0, 'l': 1, 'o': 0}
【问题讨论】:
-
我似乎得到了相同的输出。这里没有问题
-
到达第二个
l时newhand的状态是什么?hand的状态如何? -
哪个python版本?
-
最新的python.3.8 ish
标签: python dictionary iteration