2009-12-09 54 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列表,而不是修改原來的 。

相關問題