Python入門

閏年(うるうどし)を判定する方法 | Python入門


ども、木村です。本業はデータサイエンティスト、副業でアプリ開発をしています。

本記事は、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)+"年:平年")

まとめ

うるう年の判定は、システムによって必須であり重要なロジックだったりします。

条件をしっかりと確認して、バグのない実装を心がけましょう!