Hangman Python,显示包含用户输入的所有索引不同
Hangman Python, reveal different all indexes containing user's input
基本上,如果选择的单词是“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))
如果有任何解决方法请告诉我,谢谢。
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()
基本上从两个或多个可迭代对象中分别获取一个元素,并将它们 returns 作为一个元组。所以这里 zip(ai_word, range(len(ai_word)))
获取字母及其索引,因此如果字母匹配,我们可以轻松地用它的索引更改字母。
编辑 - 正如@Oli 在评论中提到的那样 -
您还可以使用:
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
基本上,如果选择的单词是“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))
如果有任何解决方法请告诉我,谢谢。
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()
基本上从两个或多个可迭代对象中分别获取一个元素,并将它们 returns 作为一个元组。所以这里 zip(ai_word, range(len(ai_word)))
获取字母及其索引,因此如果字母匹配,我们可以轻松地用它的索引更改字母。
编辑 - 正如@Oli 在评论中提到的那样 - 您还可以使用:
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