この記事では、Pythonでうるう年を判定する方法を解説します。
うるう年の判定はそれほど難しくないので初心者の方の学習に使われたりします。
それでは、うるう年の条件を確認してプログラムで表現する方法を見ていきましょう!
うるう年(leap year)とは、2月29日が存在する年のことを言って4年に一度だけ訪れます。なんでも季節と暦がずれるのを調整する年なんだとか。
うるう年の条件は上記のように明確に定められています。
ということは、渡された値が上記の条件に当てはまるかどうかを判定するだけでうるう年かどうかを判定することができます。
それでは、この条件を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("平年")
先ほどのコードを使ってうるう年を判定してみましょう!
year = int(input('西暦: '))
if year % 100 == 0 and year % 400 != 0:
print("平年")
elif year % 4 == 0:
print("うるう年")
else:
print("平年")
実行結果
西暦: 2004
うるう年
西暦: 2000
うるう年
西暦: 1904
うるう年
西暦: 1900
平年
ちゃんと判定することができました!
実は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でうるう年を判定するプログラムを作成しました。
うるう年判定は、学習のためによく使われますが、型変換に条件分岐が使えれば色々なコードを書くことができます。いろいろ試して遊んでみましょう!
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ