Python游戏输入YES时循环无法正常重启的问题排查
猜单词游戏重启问题的原因与修复方案
问题根源
你的代码存在三个核心问题,导致无法正常重启游戏:
- 初始游戏流程在循环外:游戏的开场提示、猜测次数初始化、首次猜测输入都写在了外层循环外面,只有第一次运行游戏时会执行,后续重启直接跳过这部分。
guess变量未重置:第一次猜对后,guess的值已经是"pen",再次进入游戏时,直接判定猜测正确,不会重新让用户输入新的答案。guesses计数未重置:每次重启游戏时,猜测次数没有归零,会延续上一轮的计数,导致次数统计错误。
修复后的代码
keep_playing = "yes" while keep_playing == "yes": # 把游戏初始化逻辑放到循环内,每次重启都重新执行 print("I can write and help you to study. What am I?") print(" ") guesses = 1 guess = input("What is your guess? ") secret_word = "pen" while guess.lower() != secret_word: print("Sorry, that's the wrong answer.") guess = input("What is your guess?: ") guesses += 1 print("Congratulations! You guessed it") print(f"It took you {guesses} guesses") keep_playing = input("Would you like to play again (yes/no)? ").lower() print("See you next time! Thanks for playing.")
修复说明
- 将游戏的开场提示、
guesses初始化、首次guess输入全部移到while keep_playing == "yes"循环内部,确保每次重启游戏都会重新触发这些步骤。 - 对
keep_playing的输入做了.lower()处理,避免用户输入大写"YES"导致循环终止的问题。 - 简化了猜对后的判断逻辑,因为内层循环结束时必然是猜对了,不需要额外的
if判断。
内容的提问来源于stack exchange,提问作者SkepticalChiffon
相关产品推荐
相关产品推荐

