Python编写的Hangman游戏重玩功能输入Y/N仍死循环如何修复
问题修复方案
核心错误原因
死循环完全是while循环的判断条件逻辑错误导致的:
- 原写法
while playagain != 'Y' or 'N'不符合Python判断规则:该条件会被解析为(playagain != 'Y') or ('N'),而非你预想的「既不等于Y也不等于N」。而非空字符串'N'的布尔值永远为True,因此不管用户输入什么内容,整个判断条件永远成立,直接触发死循环。 - 删除
or 'N'后的写法while playagain != 'Y'逻辑仍然错误:当用户输入N时,满足「不等于Y」的条件,还是会进入循环继续询问。
正确修复方法
把所有重玩判断的while条件替换为以下两种写法任意一种即可:
写法1(可读性更高,推荐)
while playagain not in ('Y', 'N'):
写法2(标准多条件判断写法)
while playagain != 'Y' and playagain != 'N':
注意这里要用and而非or:只有当输入既不是Y也不是N的时候,才需要提示输入有效内容。
优化后的重玩逻辑片段
你可以把赢、输两个分支里重复的重玩逻辑统一替换为以下代码,避免重复冗余:
playagain = input('Wanna play again? (Y/N) ').upper() # 先校验输入合法性 while playagain not in ('Y', 'N'): print('Please type a valid answer. (Y/N)\n') playagain = input('Wanna play again? (Y/N) ').upper() # 循环退出后说明输入为合法Y/N,再做分支处理 if playagain == 'Y': word = random.choice(wordbank) elif playagain == 'N': print('Alright, goodbye.')
调整后即可完全解决死循环问题。
内容的提问来源于stack exchange,提问作者Pranav Borse
相关产品推荐
相关产品推荐

