Python如何修复异常处理避免输入错误时跳转至下一个输入函数
问题原因
原代码存在3个核心逻辑错误导致不符合预期:
- 循环条件写错:
while input not in range(121)中input是Python内置函数,不是存储输入值的变量,该判断逻辑完全失效 return语句放在了循环体内部,无论输入是否合法,执行一次循环就会直接返回结果,因此不会重复请求当前变量的输入- 触发
ValueError异常时没有做重输处理,直接带着无效值返回
修复后的代码
valid_Total = 120 def get_num(n): while True: try: inp = int(input(f"Enter your total {n} credits : ")) if inp not in range(121): print("Out of range") else: # 只有合法输入才返回,退出当前循环 return inp except ValueError: print("Please enter an integer") while True: x = get_num("PASS") y = get_num("DEFER") z = get_num("FAIL") if x + y + z != valid_Total: print("Incorrect Total") else: break
修复说明
- 移除了无效的
inp初始值和错误的循环条件,改用while True持续循环直到拿到合法输入 - 将
return语句移到合法输入的判断分支中,只有输入是0-120的整数时才会返回,跳出当前输入的循环 - 触发
ValueError异常时只会打印提示,不会退出循环,会自动重新请求当前变量的输入
内容的提问来源于stack exchange,提问作者Himasha
相关产品推荐
相关产品推荐

