Python Hangman游戏胜利场景重玩功能异常问题排查求助
问题根源
你胜利场景的重玩逻辑写在猜词内层循环内部,处理完重玩选择后没有跳出内层循环,直接导致两个异常:
- 输入
Y时:不会回到负责初始化对局的外层大循环,mistakes(错误次数)、letters_guessed(已猜中字母)、wrong_letters(猜错字母)这些核心对局变量都没有重置,只会接着当前内层循环继续运行,所以出现猜一次就直接判赢的问题 - 输入
N时:仅修改了playagain的值,内层猜词循环还在继续执行,不会直接退出游戏
而失败场景的重玩逻辑写在内层循环外面,此时内层循环已经因为mistakes == mistakes_allowed自动结束,处理完重玩选择后会自动回到外层大循环,所以逻辑完全符合预期。
修复方案
- 首先删除所有重玩逻辑里冗余的
word = random.choice(wordbank)语句,外层大循环已经会自动为新局选择新词,这里重复赋值没有作用 - 在胜利场景的重玩逻辑最后,加一句
break跳出内层猜词循环,处理完重玩选择后直接回到外层大循环,就能正常初始化所有对局变量
修复后的胜利逻辑代码片段
# 胜利结局 if len(letters_guessed) == len(letters_word): print() print(f'你赢了!正确单词是 {word}!') print() playagain = input('要再玩一次吗?(Y/N) ').upper() while playagain != 'Y' and playagain != 'N': print('请输入有效选项。(Y/N)') print() playagain = input('要再玩一次吗?(Y/N) ').upper() if playagain == 'N': print('好的,再见。') break # 新增这行跳出内层猜词循环
内容的提问来源于stack exchange,提问作者Pranav Borse
相关产品推荐
相关产品推荐

