Hangman游戏异常:used_letters更新后current_word未更新且word_letters未移除输入字母?
Hangman游戏异常原因及修复
问题根源:大小写不匹配
代码里存在明显的大小写不一致问题:
- 随机选取的单词(比如
aback)是小写,因此word_letters集合里的字母全是小写。 - 用户输入的字母被强制转成大写(通过
.upper()),导致两个核心逻辑失效:- 生成
current_word时,原单词的小写字母永远不在存着大写字母的used_letters集合里,所以一直显示下划线。 - 判断输入字母是否在目标单词集合时,大写字母无法匹配小写的
word_letters,自然不会执行移除操作。
- 生成
修复方案
任选一种方式统一大小写即可:
方式1:将用户输入转为小写
修改两处代码:
# 把字母表改成小写集合 alphabet = set(string.ascii_lowercase) # 用户输入转小写 userinput = input("guess a letter : ").lower()
方式2:将目标单词转为大写
修改随机单词的生成逻辑:
random_word = random.choice(words).upper()
这样word_letters集合会自动变成大写,和用户输入的格式保持一致。
内容的提问来源于stack exchange,提问作者brazilclouds
相关产品推荐
相关产品推荐

