我需要编写一个简单的hangman函数,它包含一个字符串(猜测的单词)和一个字母列表(猜测的字母)。 这是我使用的代码:
def WordGuessed(Word, letters):
if letters == []:
return False
else:
for i in letters:
if i not in Word:
return False
else:
if i == letters[-1]:
return True
代码通常是有效的,但我发现偶尔打印错误的答案。例如,如果
WordGuessed('durian', ['h', 'a', 'c', 'd', 'i', 'm', 'n', 'r', 't', 'u'])
当它应该打印为真时,它打印为假。有人能看出我的代码哪里错了吗?你知道吗
一旦你发现一个猜中的字母不在单词中,你就返回False。在你的例子中,第一个字母不在单词中。你知道吗
相反,如果您循环遍历
Word
,并检查每个字母是否在数组letters
中,它就会起作用:@jonhopkins说得对:与其检查单词是否包含所有猜测的字母,不如检查单词的所有字母是否都是猜测的。你知道吗
但您的代码可以更简洁:
如果需要检查
list
实例是否为空,只需use negation,如果我们已经到达了
for
-else
的else
块,这意味着我们已经到达了iterable的结尾,而没有return
ing或break
ing,那么不需要额外检查。所以解决方案可以写成
最后,因为我们只需要检查一次字母的外观,所以我们可以使用像^{}s 这样的独特的字母集合
试验
相关问题 更多 >
编程相关推荐