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

Python数值统计程序输入done触发Invalid input错误原因排查

问题根因
  • 执行顺序错误:当前代码先尝试将输入内容转int,再判断是否为"done"。输入"done"时转int必然抛出异常,直接触发except分支打印Invalid input,不会走到后续的done判断逻辑。
  • 异常场景变量未处理:转int失败时,变量n不会被赋值,后续判断n == 'done'本身就会触发变量未定义的潜在错误。
  • 统计逻辑错误:所有有效输入的数字没有被累计存储,仅保留了最后一次的输入值,且总和、计数变量初始化为None,做加法运算会直接报错,循环遍历[n]的逻辑也完全无法累计所有输入的统计值。
修正后代码
# 初始化统计变量
total = 0
count = 0

while True:
    number = input('Enter a number: ')
    # 先判断是否结束输入
    if number == 'done':
        break
    # 再尝试转数字做异常处理
    try:
        n = int(number)
    except:
        print('Invalid input')
        continue
    # 有效输入则累计统计值
    total += n
    count += 1

# 输出结果,加非空判断避免除以0报错
if count == 0:
    print('无有效数字输入')
else:
    avg = total / count
    print(total)
    print(count)
    print(avg)
逻辑说明
  • 优先判断输入是否为"done",匹配直接跳出循环,不会走转数字的逻辑,避免触发不必要的异常。
  • 非done的输入再尝试转int,转换失败打印错误提示后直接进入下一轮循环,不参与统计。
  • 有效输入的数字实时累加到总和、计数变量中,不需要额外循环统计。
  • 新增无有效输入的兼容逻辑,避免0次输入时出现除以0的报错。

内容的提问来源于stack exchange,提问作者Tara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 18:24:00