我刚开始学习Python,我正在制作游戏Hangman。我已经掌握了基本功能。我有一个包含单词的列表,它们是随机选择的。我有一个输入供用户猜测字母,并根据单词被拆分的列表进行检查,我有另一个列表,正确猜到的字母放在随机选择的单词中的位置。
我遇到的问题是,如果单词中有一个字母不止一次,它只会找到第一个字母并添加它。我将如何寻找一封信的所有实例并添加它们?
这是我用来将猜测的字母映射到随机选择的单词的代码。
if user_input in choose_word:
print "Good guess!"
print trys_remaining, "trys remaining!"
word_index = letter_list.index(user_input)
correct_letters[word_index] = user_input
如果有人能指出我正确的方向,那就太好了。
答案 0 :(得分:4)
您需要遍历所有匹配的索引:
for word_index, letter in enumerate(letter_list):
if letter == user_input:
correct_letters[word_index] = user_input
注意:如果循环是for letter in letter_list:
,你只会迭代字母,但不会得到相应的索引。 enumerate()
函数允许同时获取索引。
另请参阅enumerate documentation。
答案 1 :(得分:0)
您可以使用列表理解:
correct_letters = [letter if user_input == letter else correct
for (correct, letter) in zip(correct_letters, letter_list)]
请注意,这将创建一个新的correct_letters
列表
修改原来的。