我正在尝试使用Python计算1950 - 2050年每周五的星期五数量(我知道,有点晚了)。我不熟悉任何日期/日历包使用。有什么想法吗?
答案 0 :(得分:6)
这有一个直接的解决方案。使用总和来计算当月13日是星期五的次数:
>>> from datetime import datetime # the function datetime from module datetime
>>> sum(datetime(year, month, 13).weekday() == 4
for year in range(1950, 2051) for month in range(1,13))
174
答案 1 :(得分:2)
datetime.date类有一个weekday()
函数,它给你一周中的某一天(从0开始索引)为整数,因此星期五是4.还有isoweekday()
从1开始索引天数,这取决于你喜欢的。
无论如何,一个简单的解决方案是:
friday13 = 0
months = range(1,13)
for year in xrange(1950, 2051):
for month in months:
if date(year, month, 13).weekday() == 4:
friday13 += 1
答案 2 :(得分:0)
是某种运动还是家庭作业?我依旧记得解决了它。我可以给你一个提示,我似乎已经使用Calendar.itermonthdays2当然还应该有其他方法来解决它。
答案 3 :(得分:0)
听起来像是家庭作业。提示(工作日4是星期五):
import datetime
print(datetime.datetime(1950,1,13).weekday())
答案 4 :(得分:0)
虽然其他解决方案清晰简单,但下面的解决方案更像是“日历主义者”。您将需要dateutil
包,可以作为包安装:
from datetime import datetime
from dateutil import rrule
fr13s = list(rrule.rrule(rrule.DAILY,
dtstart=datetime(1950,1,13),
until=datetime(2050,12,13),
bymonthday=[13],
byweekday=[rrule.FR]))
# this returns a list of 174 datetime objects
您会看到rrule.rrule
的这五个参数:在rrule.DAILY
和dtstart
until
之间bymonthday
之间每byweekday
天({1}}和rrule.FR
} {是{{1}}(星期五)。