<p>你必须知道每个月的天数。可以使用固定表,也可以询问<a href="https://docs.python.org/3/library/calendar.html" rel="nofollow noreferrer">^{<cd1>}</a>模块:</p>
<pre><code>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]
</code></pre>
<p>如果你决定使用一个固定的表,唯一感兴趣的月份是闰年的二月。如果<a href="https://docs.python.org/3/library/calendar.html#calendar.isleap" rel="nofollow noreferrer">^{<cd2>}</a>为真,就可以增加这个值。你知道吗</p>
<p>给定一个每行整数的打开文件,您只需适当地<a href="https://docs.python.org/3/library/itertools.html#itertools.islice" rel="nofollow noreferrer">slice</a>它,将<code>int()</code>映射到片上,然后使用<a href="https://docs.python.org/3/library/statistics.html#statistics.mean" rel="nofollow noreferrer">^{<cd4>}</a>:</p>
<pre><code>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]
</code></pre>
<p>其中<code>the_file</code>只是</p>
<pre><code>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
</code></pre>