Python

【Python】閏年(うるうどし)を判定してみよう!

この記事ではPythonでうるう年を判定する方法を解説します。うるう年の判定はそれほど難しくないので初心者の方の学習に使われたりします。それでは、うるう年の条件を確認し、プログラムで表現する方法を見ていきましょう!

うるう年とは?

うるう年(leap year)とは、2月29日が存在する年のことを言い、4年に一度だけ訪れます。なんでも季節と暦がずれるのを調整する年なんだとか。

うるう年のルール
  1. うるう年は4で割り切れる年
  2. 100で割り切れて400で割り切れない年は平年

うるう年の条件は、上記のように明確に定められています。ということは、渡された値が上記の条件に当てはまるかどうかを判定するだけでうるう年かどうかを判定することができます。

それでは、この条件をPythonで表現する方法を見ていきましょう!

うるう年を判定するプログラム

今回は、ユーザー(コマンドライン)から受け取った西暦がうるう年かどうかを判定するプログラムを作成します。

西暦を受け取る

西暦をinput関数で受け取ります。その際、int型に変換しておきます。

year = int(input('西暦: '))

うるう年か判定

うるう年を判定するには、先ほどの「うるう年のルール」を条件としてif文を使って判定します。割り切れるかどうかを判定するには、%演算子を使います。

# 100で割り切れて400で割り切れない年は平年
if year % 100 == 0 and year % 400 != 0:
    print("平年")
# 上記の条件に引っかからなかった場合、うるう年の可能性がある
# 4で割り切れるならうるう年
elif year % 4 == 0:
    print("うるう年")
# その他は平年
else:
    print("平年")
【Python】if文の使い方【条件分岐】 この記事では、Pythonのif文の使い方を解説します。if文を使うことで条件分岐することができます。条件分岐とは、条件によって...

実際にうるう年を判定してみる

先ほどのコードを使ってうるう年を判定してみましょう!

year = int(input('西暦: '))

if year % 100 == 0 and year % 400 != 0:
    print("平年")
elif year % 4 == 0:
    print("うるう年")
else:
    print("平年")

実行結果

西暦: 2004
うるう年

西暦: 2000
うるう年

西暦: 1904
うるう年

西暦: 1900
平年

calendarモジュールを使う

Pythonには、うるう年を判定できる機能があらかじめ用意されています。

うるう年かどうかを判定するには、calendarモジュールのisleap()関数を使います。

import calendar

calendar.isleap(year)

引数に指定した整数がうるう年ならTrue、うるう年でなければFalseが返されます。なので、if文を使って簡単に判定することができます。

import calendar

year = int(input('西暦: '))

if calendar.isleap(year):
    print('うるう年')
else:
    print('平年')

実行結果

西暦: 2004
うるう年

西暦: 2000
うるう年

西暦: 1904
うるう年

西暦: 1900
平年

calendarモジュールは他にも指定した期間内のうるう年をカウント・列挙できたりします。

Linkcalendar — 一般的なカレンダーに関する関数群 — Python ドキュメント

まとめ

この記事では、Pythonでうるう年を判定するプログラムを作成しました。

うるう年判定は、学習のためによく使われますが、型変換に条件分岐が使えれば色々なコードを書くことができます。いろいろ試して遊んでみましょう!

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』