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

Python如何处理用户输入错误?非整数输入引发ValueError的解决方案

成绩转等级输入校验问题解决方案

错误原因

代码运行报错的核心原因是:int(score)转换操作会在输入内容不是合法整数时直接抛出ValueError异常,这个异常触发在if条件判断的执行阶段,还没走到任何分支判断逻辑,也根本不会进入你写的else分支,所以原本的容错逻辑不生效。

合理实现方案

推荐用try-except异常捕获结构处理非法输入的场景,同时优化重复转换int的冗余操作:

基础版(单次输入校验)

score = input("请输入你的考试整数成绩来获取对应等级:\n")
try:
    score_num = int(score)
except ValueError:
    print("ERROR:请输入合法的整数成绩")
else:
    if score_num >= 90:
        print("A")
    elif score_num >= 80:
        print("B")
    elif score_num >= 70:
        print("C")
    elif score_num >= 60:
        print("D")
    else:
        print("F")

进阶版(输错后自动提示重新输入,直到内容合法)

while True:
    score = input("请输入你的考试整数成绩来获取对应等级:\n")
    try:
        score_num = int(score)
    except ValueError:
        print("ERROR:请输入合法的整数成绩,请重新输入")
        continue
    # 转换成功后执行等级判断
    if score_num >= 90:
        print("A")
    elif score_num >= 80:
        print("B")
    elif score_num >= 70:
        print("C")
    elif score_num >= 60:
        print("D")
    else:
        print("F")
    break

额外优化说明

你原来的代码在每个if、elif分支都执行了一次int(score)转换,属于不必要的重复操作,优化后只需要转换一次存为数值变量,后续直接调用变量判断即可,执行效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:48:01