首页 > 解决方案 > Hangman Python,显示不同的包含用户输入的所有索引

问题描述

基本上,如果选择的单词是“green”并且用户键入“e”,那么我希望它显示“__ ee _”。但相反,它显示如下内容:__ e __。

我怎样才能解决这个问题?这是我的代码:

print("Welcome to hangman game!")

import random
words = ['act', 'air', 'age', 'bag', 'cap', 'map', 'acre', 'card', 'dish', 'wack', 'exam', 'god', 'boards', 'chair', 'count', 'facts', 'house']
word = random.choice(words)
list(word)
letters_guessed = []
wrong_letters = [""]
guesses_left = 8
win_confirm = 0

for i in word:
        letters_guessed.append("_")

while guesses_left > 0:
    print("\nThe word contains {} letters".format(len(word)))
    print("You have {} guesses left".format(guesses_left))
    
    print(*letters_guessed)
    user = input("\nEnter a letter --> ")

    if user in letters_guessed or user in wrong_letters:
        print("You have already entered '{}', enter another letter!".format(user))
        guesses_left += 1

    if user in word:
        letter = word.index(user)
        letters_guessed[letter] = user
        print(*letters_guessed)

        win_confirm += 1

        if win_confirm == len(word):
            print("You won!")
            print("The word was '{}' ".format(word))
            break

        continue

    else:
        guesses_left -= 1
        wrong_letters.append(user)

        if guesses_left <= 0:
            print("You don't have any chances left :(")
            print("The word was '{}' ".format(word))

如果有解决办法请告诉我,谢谢。

标签: pythonlistfor-loopif-statementwhile-loop

解决方案


user.index()只会得到字母的第一个索引。

if user in word:
    letter = word.index(user)
    letters_guessed[letter] = user
    print(*letters_guessed)

试试这个代码:

if guess in ai_word:
    for letter, num in zip(ai_word, range(len(ai_word))):
        if guess == letter: #If guess is there in actual word then according to the index add it
            user_letters[num] = guess

zip()基本上从两个或多个迭代中获取一个元素并将它们作为元组返回。所以这里zip(ai_word, range(len(ai_word)))得到了字母和它的索引,所以如果字母匹配,我们可以很容易地用它的索引来改变字母。

编辑- 由@Oli int sygggested 评论 - 您还可以使用:

if guess in ai_word:
    for num, letter in enumerate(ai_word):
        if guess == letter: #If guess is there in actual word then according to the index add it
            user_letters[num] = guess

推荐阅读