Python初学者编写Hangman游戏时重复字母仅替换单个问题求助
Hangman猜词游戏重复字母替换问题解决方案
问题根因
你代码的核心问题出在list.index()方法的特性上:该方法只会返回列表中第一个匹配元素的索引,哪怕单词中存在多个重复字母,循环调用也只会拿到第一个出现的位置,因此只能替换一个空位。
修复思路
不需要通过index()计算位置,直接遍历单词的索引+字母组合即可:
- 使用Python内置的
enumerate()函数可以同时拿到每个字母的索引和对应值 - 遍历过程中如果当前字母和用户输入的字母一致,就直接替换空白列表对应索引位置的值
核心代码修改
将你代码中猜对字母后的循环段:
for element in selected_word_lst: letter_selection_pos = selected_word_lst.index(letter_selection) blank_lst[letter_selection_pos] = letter_selection
替换为以下代码即可:
# 遍历单词每个位置的索引和字母 for idx, current_letter in enumerate(selected_word_lst): # 匹配到用户选的字母就替换对应位置的空位 if current_letter == letter_selection: blank_lst[idx] = letter_selection
额外优化建议:可以先对用户输入做小写统一处理,避免大小写不匹配的问题
内容的提问来源于stack exchange,提问作者Andrew Smith
相关产品推荐
相关产品推荐

