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

Advent of Code 2021 Day1:数字递增计数代码结果异常求助

问题分析与解决:Advent of Code 2021 Day1统计递增次数错误

你的代码返回8而非预期7的核心原因是:初始值previous_number = float('-inf')让第一个数字被错误计入了递增次数。

题目要求统计“数字相较于前一个数字的递增次数”,但第一个数字没有前置数字,本不应被统计。而你的代码中,第一个数字199必然大于负无穷,导致第一次循环就执行了increases +=1,多算了一次。

修正方案

方案一:先读取第一个数字作为初始基准

increases = 0

with open('day 1 test input.txt') as file:
    # 先把所有有效数字读取到列表中
    numbers = [int(line.strip()) for line in file if line.strip()]
    if not numbers:
        print(0)
        exit()
    # 第一个数字作为初始基准,从第二个数字开始比较
    previous_number = numbers[0]
    for number in numbers[1:]:
        if number > previous_number:
            increases += 1
        previous_number = number

print(increases)

方案二:通过判断跳过第一个数字的比较

increases = 0
previous_number = None  

with open('day 1 test input.txt') as file:
    for line in file:
        line = line.strip()
        if not line:
            continue
        number = int(line)
        # 只有当存在前置数字时才进行比较
        if previous_number is not None and number > previous_number:
            increases += 1
        previous_number = number

print(increases)

验证说明

测试数据中的有效递增次数为7次:

  • 200>199
  • 208>200
  • 210>208
  • 207>200
  • 240>207
  • 269>240
  • 263>260

修正后的代码会准确统计这7次递增,返回预期结果。

内容的提问来源于stack exchange,提问作者Gavin Paz Soldan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:22:03