gpt4 book ai didi

python - 如何在 Python 中循环遍历文本文件的某些部分?

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:25 24 4
gpt4 key购买 nike

目前,一名 Python 初学者正在寻求帮助。我正在从一个包含 365 行整数的文本文件中读取数据。每个整数代表一年中的一天。像这样,但对于 365 行:

1102
9236
10643
2376
6815
10394
3055
3750
4181
5452
10745

我需要检查整个文件并将 365 天分成 12 个月的每一天,然后取每个月的平均值。例如,前 31 行是一月,取平均值,打印它,然后从那里继续...

此时我已经编写了遍历整个文件的代码,并给出了一年的总数和每天的平均值,但我坚持将文件分成不同的月份并取单独的平均值。我该怎么做才能实现这一目标?

这是我当前的代码:

import math

def stepCounter ():
stepsFile = open("steps.txt", "r")
stepsFile.readline()

count = 0
for line in stepsFile:
steps = int(line)
count = count + steps
avg = count / 365
print(count, "steps taken this year!")
print("That's about", round(avg), "steps each day!")

stepsFile.close()

stepCounter()

我希望这个问题足够清楚。感谢您的帮助!

最佳答案

您必须知道每个月的天数。使用固定表,或者您可以询问 calendar模块:

In [11]: months = [calendar.monthrange(2017, m)[1] for m in range(1, 13)]

In [12]: months
Out[12]: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

如果您决定使用固定表格,唯一感兴趣的月份是闰年的二月。如果calendar.isleap(),你可以增加它是真的。

给定一个每行整数的打开文件,您可以简单地 slice适本地,将 int() 映射到切片上,并使用 statistics.mean() :

In [17]: from statistics import mean

In [18]: from itertools import islice

In [19]: [mean(map(int, islice(the_file, mdays))) for mdays in months]
Out[19]: [15, 44.5, 74, 104.5, 135, 165.5, 196, 227, 257.5, 288, 318.5, 349]

the_file 只是

In [13]: from io import StringIO

In [14]: the_file = StringIO()

In [15]: the_file.writelines(map('{}\n'.format, range(365)))

In [16]: the_file.seek(0)
Out[16]: 0

关于python - 如何在 Python 中循环遍历文本文件的某些部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46963740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com