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

Python如何修复异常处理避免输入错误时跳转至下一个输入函数

问题原因

原代码存在3个核心逻辑错误导致不符合预期:

  • 循环条件写错:while input not in range(121) 中input是Python内置函数,不是存储输入值的变量,该判断逻辑完全失效
  • return语句放在了循环体内部,无论输入是否合法,执行一次循环就会直接返回结果,因此不会重复请求当前变量的输入
  • 触发ValueError异常时没有做重输处理,直接带着无效值返回
修复后的代码
valid_Total = 120

def get_num(n):
    while True:
        try:
            inp = int(input(f"Enter your total {n} credits : "))
            if inp not in range(121):
                print("Out of range")
            else:
                # 只有合法输入才返回,退出当前循环
                return inp
        except ValueError:
            print("Please enter an integer")


while True:
    x = get_num("PASS")
    y = get_num("DEFER")
    z = get_num("FAIL")
    if x + y + z != valid_Total:
        print("Incorrect Total")
    else:
        break
修复说明
  • 移除了无效的inp初始值和错误的循环条件,改用while True持续循环直到拿到合法输入
  • 将return语句移到合法输入的判断分支中,只有输入是0-120的整数时才会返回,跳出当前输入的循环
  • 触发ValueError异常时只会打印提示,不会退出循环,会自动重新请求当前变量的输入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:09