You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数字猜谜游戏触发次数限制后无限打印“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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 13:52:41