3

Pythonを使用して、1950年から2050年までの年間13日の金曜日の数を数えようとしています(知っていますが、少し遅れています)。使用する日付/カレンダー パッケージに精通していません。何かご意見は?

4

5 に答える 5

7

これには直接的な解決策があります。sumを使用して、月の 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
于 2012-04-16T04:19:30.083 に答える
4

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
于 2012-04-16T03:59:13.823 に答える
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

の次の 5 つの引数が表示されますrrule.rrule: Take every rrule.DAILY(day) between dtstartand untilwhere bymonthdayis 13 and byweekdayis rrule.FR(Friday)。

于 2012-04-16T05:09:34.990 に答える
0

何かの練習か宿題ですか?解決したことをかすかに覚えています。私はあなたにヒントを与えることができます.Calendar.itermonthdays2を使用したようですもちろん、それを解決する他の方法もあるはずです.

于 2012-04-16T03:54:40.787 に答える
0

宿題のようですね。ヒント (平日 4 は金曜日):

import datetime
print(datetime.datetime(1950,1,13).weekday())
于 2012-04-16T03:58:59.380 に答える