Python流式接收输入计算奇偶和触发ValueError报错排查
问题根因
代码存在3个核心问题,直接导致运行报错、退出逻辑失效:
- 退出判断逻辑完全错误:Python内置
input()方法读取一行用户输入时,会自动剥离行尾的换行符\n,因此变量user_input永远不可能等于"\n\n",预设的「连续两次回车退出」逻辑永远不会触发。 - 缺少输入预处理:用户输入时如果不小心带了首尾空格、制表符,直接转整数就会触发格式错误。
- 无合法性校验与异常处理:只要输入内容不是合法整数(包括直接敲回车得到的空字符串、输入字母/符号等),直接调用
int(user_input)就会抛出你遇到的ValueError: invalid literal for int() with base 10错误,程序直接崩溃。
修复方案
针对以上问题做三点调整即可:
- 修正退出逻辑:通过统计连续空输入的次数判断退出行为,连续两次输入为空(即连续敲两次回车)时跳出循环。
- 增加输入预处理:读取输入后先调用
strip()去除首尾所有空白字符,避免无意义的格式干扰。 - 增加异常捕获:转换整数时捕获格式错误,给出提示后跳过当前次输入,保证程序不会因为非法输入直接崩溃。
修复后完整代码
sum_of_even_number = 0 sum_of_odd_number = 0 empty_input_count = 0 while True: user_input = input().strip() # 连续两次空输入则退出 if not user_input: empty_input_count += 1 if empty_input_count == 2: break continue # 有有效输入时重置空输入计数 empty_input_count = 0 # 校验输入格式 try: num = int(user_input) except ValueError: print(f"无效输入:{user_input} 不是合法整数,请重新输入") continue # 按奇偶累加 if num % 2 == 0: sum_of_even_number += num else: sum_of_odd_number += num print("偶数累加和:", sum_of_even_number) print("奇数累加和:", sum_of_odd_number)
运行说明:程序启动后可逐行输入整数,需要结束统计时连续敲两次回车即可;输入非整数内容时会给出错误提示,不会中断运行。
内容的提问来源于stack exchange,提问作者PRERNA
相关产品推荐
相关产品推荐

