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

