2023 年第 1 日代码的出现我自己解决问题

问题描述 投票:0回答:1

我一直在试图弄清楚代码 2023 第 1 天的出现,我真的很接近,我只是似乎无法得到我的列表上的数字总和。作为参考,“ref”是存储输入的文件,“adding”是将数字转换为列表的位置,这是一个不必要的步骤,因为我是在底部做的。

说到这里,我正在想弄清楚到底是什么。当我打印“总计”时,我只得到“1”,没有其他内容,不确定我做错了什么。我很清楚有更传统的方法可以做到这一点,但我想自己弄清楚而不需要查找指南,而且我知道我真的很接近,所以如果有人可以帮助我弄清楚为什么最后的列表没有正确地添加在一起使用 sum() ,我们将不胜感激。谢谢!

with open('ref', 'r') as f:
    for line in f.readlines():
        digits = [char for char in line.strip() if char.isdigit()]
        first = digits[int()]
        factor = 10
        result = []
        for ele in first:
            result.append(ele * factor)
        length = len(digits)
        last = digits[length - 1]
        endnum = first + last
        if length == 1:
            endnum = (first)
        else:
            pass
        with open('adding', 'a') as f:
            f.writelines(str(endnum + ','))

file = open('adding', 'r')
x = []
total = 0
for i in file:
    x.append(i)
    y = sum([(i in x) for i in x])
    total += int(y)
    print(total)

第 1 天问题描述:https://adventofcode.com/2023/day/1

python math sum
1个回答
0
投票

您的第二个循环正在计算

y
中的运行总计,然后每次将其添加到
total
中。这实际上是将每个数字乘以后续行数。

不需要像这样计算两次总数。您只需使用内置的

sum()
函数即可对文件中的所有数字求和。

with open('adding') as file:
    total = sum(int(line) for line in file)

printI(total)
© www.soinside.com 2019 - 2024. All rights reserved.