연도를 매개변수로 입력받아 그해가 윤년인지 아닌지를 True
또는 False
로 반환하는 함수 is_leap_year()
를 정의하라. 윤년이란 1년이 366일로 이뤄진 해이다. 윤년에는 2월이 28일까지가 아니라 29일까지 있다. 어떤 해가 윤년인지 아닌지를 판단하는 규칙은 다음과 같다.
코드
def is_leap_year(year):
"""연도를 입력받아 그 해가 윤년인지를 반환한다."""
# - 그해의 수가 4로 나누어 떨어지면 윤년이다. 따라서 1996년은 윤년이다.
if year % 4 == 0:
# - 단, 그해의 수가 100로 나누어 떨어지면 윤년이 아니다. 따라서 1900년은 윤년이 아니다.
if year % 100 == 0:
# - 단, 그해의 수가 400으로 나누어 떨어지면 윤년이다. 따라서 2000년은 윤년이다.
if year % 400 == 0:
return True
else:
return False
else:
return True
else:
return False
# 함수의 동작 확인
print('1996년은 윤년인가?', is_leap_year(1996))
print('1900년은 윤년인가?', is_leap_year(1900))
print('2000년은 윤년인가?', is_leap_year(2000))
print('2020년은 윤년인가?', is_leap_year(2020))
print('2021년은 윤년인가?', is_leap_year(2021))
실행 결과
1996년은 윤년인가? True
1900년은 윤년인가? False
2000년은 윤년인가? True
2020년은 윤년인가? True
2021년은 윤년인가? False
%
로 연산하여 나머지가 0인지 검사하면 된다.if year % 4 == 0: ...
과 같이 조건식과 if 문을 작성할 수 있다.# 논리식을 정리하여 작성한 간결한 함수
def is_leap_year(year):
"""연도를 입력받아 그 해가 윤년인지를 반환한다."""
return (year % 4 == 0) and (not (year % 100 == 0)) or (year % 400 == 0)