Pythonで閏年を判定してみた
皆さん
こんにちは、こんばんは
TomoProgです。
昨日、2月29日だった・・・
今年は閏年だ!!
というわけで、記念すべき20記事目はPythonを使って閏年を判定してみます。
それでは頑張っていきましょう。
閏年の判定方法
閏年というと4年に一度あるんだから4で割り切れる年が閏年だ!!
と考えてしまう人も多いと思うのですが、実は意外と複雑なんです。
- 西暦が4で割り切れる年はうるう年
- ただし、4で割り切れても100で割り切れる年はうるう年でない
- ただし、100で割り切れても400で割り切れる年はうるう年
閏年判定プログラムを書いてみる
さっそく閏年判定プログラムを書いてみました。
#-*- coding:utf-8 -*- def check_leap_year(year): """ 閏年判定 """ if year % 400 == 0: return True elif year % 4 == 0 and year % 100 == 0: return False elif year % 4 == 0: return True else: return False def main(): """ エントリーポイント """ years = [2016, 2000, 1990, 1980] for year in years: if check_leap_year(year): print(str(year) + "年は閏年です。") else: print(str(year) + "年は平年です。") if __name__ == "__main__": main()
実行結果: 2016年は閏年です。 2000年は閏年です。 1990年は平年です。 1980年は閏年です。
check_leap_year関数で閏年かどうかを判定し、閏年か平年かを出力するプログラムです。
実行結果を見る限り、閏年を正確に判定できているみたいです。
calendarモジュールで閏年を判定する
上記のように自分で閏年判定を実装してもよいですが、Pythonにはもっと簡単に閏年を判定する方法があります。
その方法がcalendarという標準モジュールを使う方法です。
実はcalendarモジュールには年を渡すと閏年かどうかを判定してくれるisleapという関数がすでに実装されています。
isleap関数を使った場合のプログラムを書いてみました。
#-*- coding:utf-8 -*- import calendar def check_leap_year(year): """ 閏年判定 """ if calendar.isleap(year): print(str(year) + "年は閏年です。") else: print(str(year) + "年は平年です。") def main(): """ エントリーポイント """ check_leap_year(2016) check_leap_year(2000) check_leap_year(1990) check_leap_year(1980) if __name__ == "__main__": main()
実行結果: 2016年は閏年です。 2000年は閏年です。 1990年は平年です。 1980年は閏年です。
上記のプログラムと同じ結果が得られました!!
calendarモジュールを使った方が、短く簡単に書くことが出来ます。