Pythonで「ある年がうるう年(2月29日がある年)かどうか」を判定するには、calendar モジュールの isleap() 関数を使用します。
この関数を使えば、「4で割り切れるが、100で割り切れる場合は除き、ただし400で割り切れる場合はうるう年とする」といった複雑な判定ロジックを自分で書く必要がなくなります。
目次
実装例:将来のうるう年チェック
ここでは、指定された複数の年(リスト)に対して、それぞれがうるう年か平年かを判定して出力するスクリプトを作成します。特に「2100年」のような例外的なケース(100で割り切れるため平年)も正しく判定できるか確認します。
ソースコード
import calendar
# 判定したい年のリスト
# 2024: うるう年
# 2025: 平年
# 2100: 4で割り切れるが100で割り切れるため「平年」
years_to_check = [2024, 2025, 2100, 2000]
print("--- うるう年判定結果 ---")
for year_val in years_to_check:
# calendar.isleap(年) は、うるう年なら True、平年なら False を返します
is_leap = calendar.isleap(year_val)
# 結果を見やすく出力
if is_leap:
print(f"{year_val}年: うるう年です (True)")
else:
print(f"{year_val}年: 平年です (False)")
実行結果
--- うるう年判定結果 ---
2024年: うるう年です (True)
2025年: 平年です (False)
2100年: 平年です (False)
2000年: うるう年です (True)
解説
calendar.isleap(year)
引数に西暦(整数)を渡すと、ブール値(True または False)を返します。 戻り値が True であれば、その年は366日あり、2月29日が存在します。
現在の年を判定する場合
現在実行中の年を判定したい場合は、datetime モジュールと組み合わせて以下のように記述します。
from datetime import datetime
import calendar
# 現在の年を取得
current_year = datetime.now().year
# 判定を実行
if calendar.isleap(current_year):
print(f"今年はうるう年です。")
else:
print(f"今年は平年です。")
