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

Python循环获取两整数输入直至和为21的代码问题排查

解决持续获取输入直到两数之和为21的问题

我看了你的代码,发现几个关键问题导致程序不管条件满足与否都会停止:

  • 嵌套循环与未更新的变量:你套了两层while循环,外层的while True本来是想让程序一直跑,但内层的while result !=21里,result初始值是0之后就再也没更新过,这会导致内层循环要么无限跑,要么触发异常后直接跳出。
  • 异常处理逻辑混乱:except块里你试图判断n1+n2,但如果用户输入的不是整数,n1或n2根本没被正确赋值,这时候这个判断本身就会报错,而且except里的break会直接跳出内层循环,接着外层的break也会执行,程序直接停止。
  • 多余的break语句:内层循环结束后你直接写了break,不管有没有满足和为21的条件,外层循环都会被终止,所以程序只能运行一轮。

给你改好了代码,逻辑更清晰,能持续获取输入直到满足条件:

def check_for_21():
    while True:
        try:
            n1 = int(input("Enter first number >> "))
            n2 = int(input("Enter second number >> "))
            total = n1 + n2
            if total == 21:
                print("You got it! ")
                break  # 满足条件就退出循环
            else:
                print("You did not get to 21! ")
        except ValueError:
            print("Please enter valid integers only! ")

# 调用函数
check_for_21()

我来解释下修正后的逻辑:

  • 去掉了多余的嵌套循环,只用一层while True来持续循环
  • 异常处理明确捕获ValueError(只有输入非整数时才触发),提示用户输入有效整数,不会直接终止程序
  • 计算两数之和后,只有当和为21时才执行break退出循环,否则继续提示输入
  • 函数不需要一开始就传n1和n2参数,因为每次都是用户输入新的值

这样修改后,程序就会一直提示用户输入,直到两数之和等于21为止啦。

内容的提问来源于stack exchange,提问作者Fathi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:55