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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:18:15