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

Python统计列表大于前项数字次数,用户输入版本结果错误原因求解

问题原因

  • 统计逻辑的for循环被放在了输入的while循环内部,每新增一个元素就会全量遍历一次列表统计,导致计数被重复累加。比如新增第3个元素时,会把前2个元素的比较结果再算一遍,最终计数远大于真实值。
  • for循环的遍历起始下标错误,你写的是range(0, len(lst)),当i=0时i-1 = -1,会取列表的最后一个元素做比较,出现无意义的逻辑错误。
  • 列表长度为1时也会执行统计逻辑,此时没有前一个元素可以比较,属于无效统计。

修正方案

方案1:输入完成后统一统计(和最初的正确逻辑一致)

把统计逻辑移到while循环外面,等用户输入完所有元素再统计:

lst = []
count = 0
finished = False

while not finished:
    n = int(input())
    if n != 0:
        lst.append(n)
    else:
        finished = True

# 输入完成后再统计
for i in range(1, len(lst)):
    if lst[i] > lst[i-1]:
        count += 1
print(count)

方案2:输入时实时统计(效率更高,不需要二次遍历)

每次新增元素时,仅比较当前新元素和前一个元素,不需要全量遍历列表:

lst = []
count = 0
finished = False

while not finished:
    n = int(input())
    if n != 0:
        # 列表已有元素时才做比较
        if len(lst) > 0:
            if n > lst[-1]:
                count +=1
        lst.append(n)
    else:
        finished = True
print(count)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:54:06