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

Python程序无法正确输出最大输入值,误输出‘done’求助

问题修复:Python正数统计程序

原代码存在的问题

  • 最大值逻辑错误:循环中每次输入后直接将num(可能是字符串"done")赋值给num1,导致最终最大值被错误设置为"done"。
  • 最大值比较时机错误:循环结束后的比较完全无效,此时num已是非数字或"done",无法和有效数字比较。
  • 除以0风险:如果用户直接输入"done",count为0,执行total/count会触发报错。
  • 语法错误:最后一个print语句缺少右括号。
  • 未处理非数字非"done"的无效输入,程序会直接退出,体验不佳。

修正后的代码

def adder():
    total = 0
    count = 0
    max_num = 0  # 初始化最大值为0,因输入要求是正数

    while True:
        user_input = input("请输入正数,输入'done'结束:")
        # 处理结束指令
        if user_input.lower() == "done":
            break
        # 验证输入是否为有效正数
        if user_input.isnumeric():
            num = int(user_input)
            total += num
            count += 1
            # 仅在输入有效数字时更新最大值
            if num > max_num:
                max_num = num
        else:
            print("输入无效,请输入正数或'done'")
            continue

    # 处理无有效输入的情况
    if count == 0:
        print("没有输入任何有效数字")
        return

    print(f"输入数字的总和是:{total}")
    print(f"输入数字的平均值是:{total / count:.2f}")
    print(f"输入的最大数字是:{max_num}")

adder()

关键修改说明

  1. 改用while True循环结构,更灵活处理各类输入场景;
  2. 优先判断是否输入"done",符合退出逻辑;
  3. 仅当输入为有效数字时,才更新总和、计数并比较最大值,彻底避免非数字值污染最大值变量;
  4. 增加无效输入的提示,引导用户正确操作;
  5. 增加无有效输入的判断,防止除以0错误;
  6. 移除未使用的import math模块,简化代码;
  7. 使用f-string格式化输出,代码更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:12:37