ある年がうるう年かどうかを判定するには、calendarモジュールが提供するisleap関数を使うのが簡単だ。また、同じ動作をする関数のコードも紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
from calendar import isleap
year_list = [2000, 2019, 2020, 2021, 2100]
for year in year_list:
result = isleap(year)
print(f'{year} is a leap year: {result}')
# 出力結果:
#2000 is a leap year: True
#2019 is a leap year: False
#2020 is a leap year: True
#2021 is a leap year: False
#2100 is a leap year: False
def isleapyear(year):
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
for year in year_list:
result = isleapyear(year)
print(f'{year} is a leap year: {result}')
# 出力結果は上に同じ
# datetimeオブジェクト、time.struct_timeオブジェクトを対象に判定する
from datetime import datetime
import time
dt = datetime.now()
result = isleap(dt.year)
print(f'{dt.year} is a leap year: {result}') # 2021 is a leap year: False
d = time.localtime()
result = isleap(d.tm_year)
print(f'{d.tm_year} is a leap year: {result}') # 2021 is a leap year: False
years_datetime_type = [datetime(year=y, month=1, day=1) for y in year_list]
for d in years_datetime_type:
result = isleap(d.year)
print(f'{d.year} is a leap year: {result}')
years_str_time = [datetime.timetuple(y) for y in years_datetime_type]
for d in years_str_time:
result = isleap(d.tm_year)
print(f'{d.tm_year} is a leap year: {result}')
うるう年かどうかは以下のような条件を基に判定される。
この条件は、Pythonに標準で添付のcalendarモジュールが提供するisleap関数を使うことで簡単に判定できる。
以下に例を示す。
from calendar import isleap
year_list = [2000, 2019, 2020, 2021, 2100]
for year in year_list:
result = isleap(year)
print(f'{year} is a leap year: {result}')
# 出力結果:
#2000 is a leap year: True
#2019 is a leap year: False
#2020 is a leap year: True
#2021 is a leap year: False
#2100 is a leap year: False
この例では、isleap関数に2000、2019、2020、2021、2100を渡している。これらの年がうるう年かどうかは上記の条件に照らし合わせると以下のようになる。
実際の出力結果もそのようになっていることに注目されたい。
また、この判定を行う関数は自分で次のように定義することもできる(実際、calendarモジュールのソースコードでも以下と同じロジックでisleap関数が実装されている)。
def isleapyear(year):
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
for year in year_list:
result = isleapyear(year)
print(f'{year} is a leap year: {result}')
# 出力結果は上に同じ
Copyright© Digital Advantage Corp. All Rights Reserved.