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

为什么统计正负整数的Python程序输入后循环结束无输出?

程序提前终止问题原因分析

作业题目要求:编写程序读取不确定数量的整数,统计读取到的正、负数个数,计算输入值的总和与平均值(不计入0)。程序在输入0时结束,平均值以浮点数形式展示。

问题代码

positive = 0
negative = 0
total = 0
count = 0

number = eval(input("Enter an integer, the input ends if it is 0:"))
while number != 0:
    total += number
    count += 1
    if number > 0:
        positive += 1
    elif number < 0:
        negative += 1
    else:
        break

average = total/count
print("The number of positives is", positive)
print("The number of negatives is", negative)
print("The total is", total)
print("The average is", average)

问题现象

输入一个数值后,程序没有输出任何其他内容就结束了。

根因说明

  • 核心问题1:循环逻辑缺失输入更新。程序仅在进入while循环前读取了一次用户输入,循环体内没有读取新输入的代码,number值不会更新。如果第一次输入的是非0值,程序会进入无限死循环,看起来处于无响应状态。
  • 核心问题2:未做除零防护。如果用户第一次输入的就是0,会直接跳过while循环,执行average = total/count时,count初始值为0,触发ZeroDivisionError除零异常,程序直接崩溃退出,没有后续统计输出。
  • 冗余逻辑问题:while循环的进入条件是number != 0,因此循环体内的else: break分支永远不会被触发,属于无效代码。

修复方案

  1. 在while循环体末尾新增输入读取语句,更新number的值:
number = eval(input("Enter an integer, the input ends if it is 0:"))
  1. 计算平均值前先判断count是否为0,避免除零错误,示例如下:
if count == 0:
    print("未输入任何有效非零整数")
else:
    average = total/count
    print("The number of positives is", positive)
    print("The number of negatives is", negative)
    print("The total is", total)
    print("The average is", average)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:15:07