python - 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))
如果有解决办法请告诉我,谢谢。
解决方案
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
推荐阅读
- html - “左”标签有效,但顶部仅在我将其设置为 px 时有效,而在我设置为 % 时无效
- javascript - 即使 dx 和 dy 为 0,d3 拖动也会触发事件
- swift - 如何在重新启动之间缓存此 api 响应?
- c++ - Windows 标题栏图标
- php - 如何删除数组内的嵌套数组
- php - PHP 警告:未知:无法为池分配内存
- c++ - 如何在 C++ 中的列表中保存计时时间
- mysql - 单击 datagridview 相关字段时,VB.net 应用程序中的某些数据绑定对象(如文本框、组合框等)中的数据会丢失
- unity3d - 如何在动画选项卡中添加一个空的关键帧
- python-3.x - 如何将嵌套的字典存储在本地文件中并将其检索回来,将数据类型保持为字典而不是 str