私の解答例は以下です。
-----
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 件のコメント:
コメントを投稿