Pythonを使用して、1950年から2050年までの年間13日の金曜日の数を数えようとしています(知っていますが、少し遅れています)。使用する日付/カレンダー パッケージに精通していません。何かご意見は?
質問する
4063 次
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 dtstart
and until
where bymonthday
is 13 and byweekday
is 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 に答える