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

Python成绩转等级程序try-catch逻辑错误调试求助

Python成绩等级判定代码问题排查与修复

你的代码每次都触发bad score是因为存在几个关键错误:

  • 类型不匹配导致的异常:input()获取的内容是字符串类型,直接拿inp和浮点数(比如0.00、0.90)做大小比较会触发TypeError,直接进入except块输出错误。而且你写的float(inp >= 0.00)是完全错误的写法——先做字符串和数字的比较本身就非法,再转成float也没有意义。

  • 未正确存储转换后的数值:就算转换成功,你也没把转好的浮点数存下来,后续的条件判断还是在用字符串和数字比,必然报错。

  • 异常捕获范围太广:except:会捕获所有异常,包括逻辑错误,不利于排查问题,应该针对性捕获输入无法转成浮点数的ValueError。

修正后的代码

inp = input('enter score: ')
try:
    # 先把输入转换为浮点数并存储
    score = float(inp)
    # 先判断分数范围是否合法
    if not (0.0 <= score <= 1.0):
        print('bad score')
    else:
        # 根据分数判定等级
        if score >= 0.90:
            grade = 'A'
        elif score >= 0.80:
            grade = 'B'
        elif score >= 0.70:
            grade = 'C'
        elif score >= 0.60:
            grade = 'D'
        else:
            grade = 'F'
        print('Grade: ', grade)
# 仅捕获输入无法转换为数字的异常
except ValueError:
    print('bad score')

关键修正点说明

  1. 先将输入字符串转换为浮点数并存储为变量score,后续所有判断都基于这个数值变量。
  2. 单独做范围校验,不在0-1区间内直接输出错误;范围合法再进入等级判定逻辑。
  3. 将宽泛的except:改为except ValueError:,只捕获输入不是有效数字的异常,避免误判逻辑类错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:45:28