2009-12-09 55 views
0

我刚开始学习Python,我正在创建游戏Hang子手。我已经获得了基本的功能。我有一个包含单词的列表,它们是随机选择的。我有一个让用户猜测字母的输入,并根据单词被分割的列表进行检查,我有另一个列表,正确猜测的字母放在他们在随机选择的单词中的位置。搜索Python列表并返回2个或多个相同的字符

我遇到的问题是,如果单词中有一个字母不止一次,它只会找到第一个字母并添加它。我将如何去查找一封信的所有实例并添加它们?

这是我用来映射与随机选择的单词对应的猜字母的代码。

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 

如果任何人都可以在正确的方向指向我,这将是巨大的。

回答

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

+0

这太棒了,非常感谢您的快速回复。 – 2009-12-09 19:14:37

+0

快速更新,它的工作完美,非常感谢您的帮助。 – 2009-12-09 19:22:54

+0

这非常完美。也许可以通过'user_input'和'letter'的'lower'来增加区分大小写。 – 2009-12-09 19:49:42

0

您可以使用列表理解:

correct_letters = [letter if user_input == letter else correct 
        for (correct, letter) in zip(correct_letters, letter_list)] 

注意这将创建一个新的correct_letters列表,而不是修改原来的 。

相关问题