Python输入函数触发Traceback与ValueError问题求助
解决输入字母触发ValueError的问题
你当前的代码直接将input()返回值强制转换为整数,并没有把输入逻辑放到你提到的while True和try-except代码块中,所以一旦输入非整数内容,就会直接抛出ValueError,无法触发你预期的异常提示逻辑。
修正方案1:封装复用的整数输入函数
把输入验证逻辑封装成函数,方便多次调用:
def get_valid_integer(prompt): while True: try: return int(input(prompt)) except ValueError: print("需要整数,请重新输入") # 获取三个学分输入 pass_credit = get_valid_integer("please enter your credits at pass:") defer_credit = get_valid_integer("Please enter your credits at defer:") fail_credit = get_valid_integer("please enter your credits at fail:")
修正方案2:逐个处理输入
如果不想封装函数,可以为每个输入单独添加循环和异常处理:
# 处理pass学分输入 while True: try: pass_credit = int(input("please enter your credits at pass:")) break except ValueError: print("需要整数,请重新输入") # 处理defer学分输入 while True: try: defer_credit = int(input("Please enter your credits at defer:")) break except ValueError: print("需要整数,请重新输入") # 处理fail学分输入 while True: try: fail_credit = int(input("please enter your credits at fail:")) break except ValueError: print("需要整数,请重新输入")
两种方案的核心逻辑一致:将输入转换操作放在try块中,当转换失败触发ValueError时,except块会打印提示信息,然后while True循环会让程序再次请求输入,直到用户输入有效的整数后通过break跳出循环。
内容的提问来源于stack exchange,提问作者user20463955
相关产品推荐
相关产品推荐

