搜索Python列表并返回2个或更多相同的字符

时间:2009-12-09 18:48:15

标签: python list

我刚开始学习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

如果有人能指出我正确的方向,那就太好了。

2 个答案:

答案 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列表 修改原来的。