P.52 「13日の金曜日」を探すWebアプリケーション
一通り入力し、動作を確認。
毎度タイプミスで苦労するも、特に問題なし。と思ったけど、一応 35行目にフォーマット文字列の引数(という表現で合っているのか)を付け足しておきました。
#content += u"%d年には13日の金曜日はありません" content += u"%d年には13日の金曜日はありません" % year
上記箇所の動作確認をとる為に、引数(年数)をいちいちアドレスバーに入力してみるも、いつまでたっても13日の金曜日。
このままでは埒があかないので、作成したプログラムを少し変更して、13日の金曜日が無い年を調べるプログラムをでっち上げてみました。
#!/usr/bin/env python # coding: utf-8 import cgi from datetime import datetime html_body = u""" <html> <head> <meta http-equev="content-type" content="text/html; charset=utf-8" /> </head> <body> %s %s </body> </html>""" content="" content_ex="" form = cgi.FieldStorage() year_str = form.getvalue('year', '') to_str = form.getvalue('to', '') if not year_str.isdigit(): content = u"西暦を入力して下さい" elif not to_str.isdigit(): content = u"西暦を入力して下さい" else: def_y = int(year_str) year = int(year_str) to = int(to_str) sumf13 = 0 for year in range(year, to+1): friday13 = 0 notf13 = 0 for month in range(1, 13): date = datetime(year, month, 13) if date.weekday() == 4: friday13 += 1 #content += u"%d年%02d月13日は金曜日です" % (year, date.month) #content += u"<br />" if friday13: content += u"%04d年には合計%d個の13日の金曜日があります" % (year, friday13) content += u"<br />" #content += u"%d, " % friday13 sumf13 += friday13 else: #content += u"%04d年には13日の金曜日はありません" % year notf13 += 1 if not notf13: content_ex += u"%04d年から%04d年の間に、13日の金曜日の無い年はありません" % (def_y, to) content_ex += u"<br />" content_ex += u"合計%d個の13日の金曜日があります" % sumf13 content_ex += u"<br /><br />" else: content_ex += u"合計%d個の13日の金曜日があります" % sumf13 content_ex += u"<br /><br />" print "Content-type: text/html; charset=utf-8\n" print (html_body % (content_ex, content)).encode('utf-8')
引数の開始(year)から終了(to)の年数から結果と合計数を出力します。出来の悪さは一先ず置いておくとして、とりあえず動作はする模様。
合計数も、カンマ区切りで出力(、テキストファイルにコピペ、csvファイルで保存)したものを Google Spreadsheet にインポートし、合計を計算した限りでは間違いありませんでした。
で、
(1〜9999年までの間に)13日の金曜日の無い年って無いのカシラ?
…うーん、やっぱりプログラムが間違ってるのかなぁ