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
相关产品推荐
相关产品推荐

