ども、木村です。本業はデータサイエンティスト、副業でアプリ開発をしています。
本記事は、Pythonで閏年(うるうどし)を判定する方法を解説します。
Pythonで閏年(うるうどし)を判定したい方
うるう年とは?
うるう年とは、2月29日がある年を指します。
年間日数365日は、地球が太陽の周りを1周する時間になりますが、正確には365.24219日と言われています。
そしてこの小数点以下の時間も含めると、毎年6時間が暦とズレることになります。
このズレを解消するために4年に1度だけうるう年を設けズレを修正しています。
つまり、うるう年は以下の性質を持ってることが言えます。
- うるう年は4で割り切れる
- 100で割り切れて400で割れきれない場合はうるどしではない(平年)
今回Pythonで判定するプログラムでは上記の条件に合致するかを確認します。
Pythonで閏年(うるうどし)を判定する方法
100で割り切れて400で割り切れないかを確認する
今回はyearに確認したい年を入力して、yearがうるう年かどうかを判定します。
まず最初に100で割り切れて400で割り切れないかを確認します。この条件が合致する場合「うるう年ではない(平年)」という判定になります。
year = 1993 #確認したい月を入力する
if year % 100 == 0 and year % 400 != 0:
print("うるう年ではありません")
4で割り切れるか確認する
上記の条件に該当しない場合は閏年の可能性がありますので、4で割り切れるか確認しましょう。
条件に該当した場合は「うるうどしである」という判定になります。
year = 1993 #確認したい年を入力する
if year % 100 == 0 and year % 400 != 0:
print("うるう年ではありません")
elif year % 4 == 0:
print("うるう年です")
else:
print("うるう年ではありません")
これでうるう年を判定するプログラムが完成しました!
応用編:うるう年の一覧を出したい場合
もし西暦0年から指定した年までの閏年の一覧を出したい場合は以下のようにfor文を組み込むことにより実現できます。
year = 1993 #確認したい年を入力する
for y in range(0, year): #確認したい年の範囲を設定
if y % 100 == 0 and y % 400 != 0:
print(str(y)+"年:平年")
elif y % 4 == 0:
print(str(y)+"年:閏年")
else:
print(str(y)+"年:平年")
まとめ
うるう年の判定は、システムによって必須であり重要なロジックだったりします。
条件をしっかりと確認して、バグのない実装を心がけましょう!
Pythonの勉強法を徹底的にまとめました!
Pythonの勉強方法にお困りの方はぜひご参考ください!