私の解答例は以下です。
-----
import datetime
def f(ymd0, ymd1):
s, t, r = str(ymd0), str(ymd1), 0
y0, m0 = int(s[:4]), int(s[4:6])
y1, m1 = int(t[:4]), int(t[4:6])
for i in xrange(y0, y1+1):
j0, j1 = {y0:m0}.get(i, 1), {y1:m1}.get(i, 12)
for j in xrange(j0, j1+1):
if datetime.datetime(i, j, 1).weekday()==6: r += 1
return r
print f(19010101, 20001231)
-----うるう年と曜日の計算をする部分は、datetimeという標準モジュールですべて代替できます。
前回のソースコードと比べると、uruu関数とyoubi関数が不要になりました。
注意すべき点は、datetimeモジュールのdatetimeオブジェクトのweekday関数の戻り値は、「月曜日を 0、日曜日を 6 とする整数」であることです。
このため、日曜日判定では、weekday関数の戻り値が6かどうかを判定しています。
(追記)
・20120715
ソースコード部分にSyntaxHighlighterを導入。
0 件のコメント:
コメントを投稿