Categories: 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文を使うことで条件分岐することができます。条件分岐とは 指定された条件によって処理を分岐させることを言います。プログラミングのキモとも言える構文なのでしっかりと学んでいきましょう。それでは、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でうるう年を判定するプログラムを作成しました。

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

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

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago