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

基础循环正数求和统计程序未输出预期内容求助

问题分析与修复方案

原代码存在的问题

  • 首次有效输入没被计入entries统计:循环里只有输入下一个数后才给entries加1,导致第一个正数的输入次数漏算,最后算平均值时可能触发除以0的错误。
  • 无效负数输入后直接终止程序:输入非-999的负数时,程序只会提示错误就结束,没让用户重新输入。
  • -999被误判为无效负数:输入结束信号-999时,会先弹出错误提示,不符合需求逻辑。
  • 多余的中间输出:循环内每次输入正数都打印当前总和,不是需求要求的最终输出内容。

修复后的代码

print("Welcome to the number program")
total_number = 0
entries = 0

while True:
    number = int(input("Please give me a number \n"))
    # 先判断是否是结束信号
    if number == -999:
        break
    # 处理有效正数输入
    if number > 0:
        total_number += number
        entries += 1
    else:
        # 非结束信号的负数,提示错误并继续输入
        print("Sorry, this value needs to be positive. Please enter a different number.")

# 输出结果前先判断是否有有效输入,避免除以0
if entries > 0:
    print(f"总和: {total_number}")
    print(f"输入次数: {entries}")
    print(f"平均值: {total_number / entries}")
else:
    print("没有输入有效正数,无法计算结果")

修改说明

  • 用while True无限循环配合break,让结束逻辑更直观,不用反复处理循环条件。
  • 把输入操作统一放到循环里,减少重复代码,保证每一次输入都能被正确处理。
  • 优先判断-999结束信号,避免被当作无效负数提示错误。
  • 有效正数输入时立刻累加总和、统计次数,确保所有有效输入都被计数。
  • 增加无有效输入的容错处理,防止出现除以0的运行错误。
  • 去掉了循环内多余的中间总和打印,只在程序结束时输出最终结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:45:34