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

Python成绩录入程序:如何处理非'exit'的单词输入错误?

解决Python成绩录入程序的输入验证问题

修改后的代码

print("You will be entering grades. If you wish to exit, please type 'exit'.")

while True:
    grade_input = input("Enter a grade:").strip()  # 先去除首尾空格
    
    # 处理空输入
    if not grade_input:
        print("You did not enter anything, try again")
        continue
    
    # 先判断退出指令,避免被当成无效数字处理
    if grade_input.lower() == 'exit':
        print("Exiting...")
        break
    
    # 尝试将输入转换为数字
    try:
        grade = float(grade_input)
        # 验证成绩范围并判定等级
        if not 0 <= grade <= 100:
            print("Invalid grade")
        elif grade >= 80:
            print("You got an A")
        elif grade >= 70:
            print("You got a B")
        elif grade >= 60:
            print("You got a C")
        elif grade >= 50:
            print("You got a D")
        else:
            print("You got an F")
    except ValueError:
        # 转换失败时,说明是除'exit'外的非数字输入
        print("Please enter an integer")

print("Done")

关键改动说明

  • 优先处理退出指令:在尝试转换数字前先检查输入是否为'exit'(不区分大小写),彻底避免退出指令被误判为无效数字
  • 提前处理空输入:用strip()去除输入首尾空格后判断是否为空,逻辑更直观
  • 精准捕获异常:将原代码的except:改为except ValueError:,只捕获数字转换失败的异常,避免意外捕获其他未知错误
  • 简化等级判断逻辑:去掉重复的范围条件(如<=100已在第一个判断中处理),让代码更简洁

修改后,输入abc这类非'exit'的单词时会触发异常,提示“Please enter an integer”;输入'exit'则正常退出程序,同时保留了空输入提示、成绩范围验证和等级判定的原有功能。

内容的提问来源于stack exchange,提问作者Sultan Al samman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:43:09