数字猜谜游戏触发次数限制后无限打印“FAILURE”问题排查求助
解决数字猜谜程序的无限打印问题
嘿,我来帮你搞定这个无限打印的问题!
首先说清楚问题根源:当用户用完4次输入机会后,你的代码进入else分支,只执行print("FAILURE")但没有终止循环的逻辑,也没更新n的值。这就导致while n!="6"的条件永远成立,循环会一直重复打印"FAILURE"。
另外原代码还有个小瑕疵:不管用户最终有没有猜对,程序最后都会打印"Yes, the num was '6'",这显然不符合预期——只有猜对的时候才应该显示成功消息对吧?
下面给你两个修正方案,你可以根据需求选择:
方案1:仅解决无限打印问题(保留原有消息逻辑)
在else分支里添加break跳出循环,这样打印一次"FAILURE"后就终止循环:
cntr = 0 n = input("The magic number is - ") while n != "6": cntr += 1 if cntr < 4: n = input("No, try again ... ") elif cntr == 4: n = input("Last chance ") else: print("FAILURE") break # 跳出循环,终止重复打印 print("Yes, the num was '6'")
方案2:优化逻辑,仅在猜对时显示成功消息
利用Python的while-else结构,只有当循环正常结束(即用户猜对了数字)时才打印成功消息,失败时只显示"FAILURE":
cntr = 0 n = input("The magic number is - ") while n != "6": cntr += 1 if cntr < 4: n = input("No, try again ... ") elif cntr == 4: n = input("Last chance ") else: print("FAILURE") break else: # 只有当循环未被break中断(即猜对数字)时,才执行这里 print("Yes, the num was '6'")
核心改动说明:
- 给
else分支添加break语句,直接终止无限循环; - 方案2用
while-else优化了成功消息的触发逻辑,让程序行为更符合游戏的正常预期。
内容的提问来源于stack exchange,提问作者Kero
相关产品推荐
相关产品推荐

