Python代码input取值恒真导致while无限循环问题求助
问题定位
你的排查结论完全准确,代码存在两个直接导致异常的问题:
- 接收用户输入的语句后,硬编码了
choice = "Yes"赋值逻辑,这行代码会直接覆盖用户输入的所有内容,无论用户输入什么,choice的值都会被强制设为"Yes" while循环内部没有任何修改choice取值的逻辑,循环判断条件choice == "Yes"始终成立,因此会触发无限循环,永远无法执行到else分支的代码。
修正方案
首先删除多余的choice = "Yes"硬赋值行,即可恢复输入判断的基础逻辑。
如果只需要做单次输入判断,可以直接把while换成if分支判断,代码如下:
print("the test game") choice = input("do you want to play? Yes or No?") if choice == "Yes": print("No you don't..") else: print("Yes you do..")
如果你后续需要实现循环交互逻辑,记得在循环体内部增加修改choice值的逻辑(比如重新获取用户输入),避免条件恒真触发死循环,简单循环示例代码如下:
print("the test game") choice = input("do you want to play? Yes or No?") while choice == "Yes": print("No you don't..") # 循环内重新获取输入,更新choice值 choice = input("do you want to play again? Yes or No?") else: print("Yes you do..")
补充说明:Python中
while配套的else分支,仅在循环正常执行完毕(未被break语句强制中断)时才会触发,后续如果增加循环中断逻辑需要注意这个语法特性。
内容的提问来源于stack exchange,提问作者nnate242
相关产品推荐
相关产品推荐

