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

读取整数至0后输出最大值程序报错(输出-2而非6)如何修复?

问题分析

原代码存在3个核心逻辑错误,导致输出结果不符合预期:

  • 最大值遍历逻辑错误:循环中只要发现z[a] > z[a+1]就直接将z[a]赋值为最大值并终止循环,没有遍历完整的输入序列,案例中遍历到-2 > -5时就提前停止,完全没有读取到后续的6
  • 边界溢出风险:循环判断条件为a < len(z),当a等于序列最后一个索引时,访问z[a+1]会触发下标越界报错
  • 最大值初始值设置错误:将max初始值设为0,若所有输入的有效数值均为负数,最终结果会错误返回0而非实际最大值
修正代码
z = []
while True:
    b = int(input("Enter a Number ").strip())
    if b == 0:
        break
    z.append(b) # 终止符0不存入序列,如果需要统计0可以把这行移到if判断前

if not z: # 处理没有输入有效数值直接输0的情况
    print("未输入有效整数")
else:
    max_val = z[0]
    for num in z:
        if num > max_val:
            max_val = num
    print(f"the max number is {max_val} his appearence  is :{z.count(max_val)}")
修改说明
  • 调整了数值存入逻辑:默认终止符0不存入统计序列,符合常规需求,若需要把0纳入统计只需把z.append(b)移到if b == 0判断之前即可
  • 替换了错误的最大值遍历逻辑:直接遍历所有元素,逐个比较更新最大值,遍历完成后才得到最终最大值,不会提前终止
  • 增加了空序列容错:处理用户直接输入0没有有效数值的异常场景
  • 修复了边界越界的潜在问题,同时规避了用内置函数名max做变量名的规范问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:45:03