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

为什么这段Python的try except代码无法实现预期输入校验功能?

代码错误说明

以下是你代码中存在的所有问题:

  • 变量未初始化:count 变量没有赋初始值,第一次执行count = count + 1会直接抛出未定义错误;sum_list 应该在循环外初始化,不应该在异常分支里重复清空。
  • 异常分支逻辑错误:第一个校验输入格式的except分支触发后,没有终止后续校验逻辑,此时operand_1、operand_2等变量未定义,后续执行len(operand_1)会直接报错,就会触发你遇到的「输入单个数字也触发长度校验错误」的问题。
  • 数字校验逻辑完全错误:operand_1 = int 是把int类赋值给变量,根本不会做字符串转整数的校验,无论输入是不是数字都不会触发异常;且转换为整数后不能调用len()方法,数字长度校验需要对转换前的字符串操作。
  • 运算符校验逻辑完全错误:operator == "+" or "-" 表达式永远返回True,因为or "-" 会直接判断"-"的布尔值(非空字符串为True),且该语句仅做表达式计算无判断逻辑,也不会抛出异常,所以无论输入什么运算符都不会触发报错,这就是*、/能通过校验的原因。
  • 长度校验逻辑错误:len(operand_1) < 4 仅写了表达式没有判断逻辑,也不会抛出异常;且需求是最多4位,应该判断<=4而非<4。
  • 最终追加逻辑错误:无论校验是否通过,你都会执行sum_list.append(sum),非法输入也会被存入列表,不符合需求。
  • 变量名不规范:sum是Python内置函数名,用作变量名会覆盖内置功能,建议更换。
修正后参考代码
sum_list = []
count = 0
while True:
    problem = input("Pls enter a math problem: ")
    count = count + 1
    # 初始化校验状态
    valid = True
    if problem.lower() == 'done':
        break
    elif count > 5:
        print('Error: Too many problems')
        break
    else:
        # 校验格式是否为三部分
        digits = problem.split(' ')
        if len(digits) != 3:
            print('Put a space in between each number and operator')
            valid = False
        if valid:
            operand_1, operator, operand_2 = digits
            # 校验数字是否合法
            try:
                int(operand_1)
                int(operand_2)
            except:
                print('Error: Numbers must only contain digits.')
                valid = False
        if valid:
            # 校验运算符
            if operator not in ('+', '-'):
                print('Error: Operator must be "+" or "-".')
                valid = False
        if valid:
            # 校验数字长度
            if len(operand_1) >4 or len(operand_2) >4:
                print('Error: Numbers must only contain maximum of 4 digits.')
                valid = False
        # 校验通过才存入列表
        if valid:
            sum_list.append(problem)

print(sum_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:06:08