파이썬에서 윤년 결정

Muhammad Adnan Ashraf 2023년6월21일
  1. 윤년 소개
  2. Python의 간단한 if-else 구성을 통해 윤년 결정
  3. Python의 Calendar 모듈을 통해 윤년 결정
  4. Python의 Calendar 모듈을 사용하여 조건부 연산자를 통해 윤년 결정
파이썬에서 윤년 결정

이 기사에서는 윤년으로 알려진 용어에 대해 설명합니다. 또한 특정 연도가 윤년인지 여부를 확인하기 위해 Python 구현을 볼 것입니다.

윤년 소개

지구가 태양 주위를 한 바퀴 도는 데는 365일보다 6시간이 더 걸립니다.

2월(즉, 29일)에 하루를 추가하지 않는다고 가정합니다. 그 경우, 결국 우리는 다른 계절에 많은 종교 및 정치 행사를 보게 될 것입니다(날짜는 동일하지만).

6 x 4 = 24로 매 4년마다 하루를 더할 것을 제안합니다. 그러나 추가 6시간이 정확하지 않기 때문에 간단하지 않습니다.

지구는 약 365일 5시간 48분 46초 만에 자전을 마치는데, 앞 글에서 논의한 진술과 11분 14초의 차이가 난다. 이 미묘한 차이로 인해 같은 계절에 날짜를 유지하기 위해 더 복잡한 계산을 수행하게 됩니다.

따라서 윤년에 해당하려면 연도가 다음 조건을 따라야 합니다.

  1. 바로 실격: 해당 연도가 4로 균등하게 나누어지지 않으면 윤년에 해당되지 않습니다. 예를 들어, 2077은 4로 나누어 떨어지지 않으므로(즉, 2077 % 4 != 0) 윤년이 아닙니다.
  2. 연도가 4로 나누어 떨어지지만 100으로 나누어 떨어지지 않으면 윤년이 됩니다. 예를 들어, 2024는 4로 적절하게 나눌 수 있지만 100으로는 나눌 수 없습니다(즉, 2024 % 4 == 02024 % 100 != 0). 따라서 윤년이 될 자격이 있습니다.
  3. 숫자가 4와 100으로 균등하게 나누어지면 해당 연도가 400으로도 나누어 떨어지는지 확인합니다. 그렇다면 해당 연도는 윤년이 됩니다. 그렇지 않으면 해당 연도는 윤년이 아닙니다.

예를 들어 4000은 4, 100, 400으로 나누어 떨어지므로 윤년입니다. 수학적으로 연도 % 4 == 0, 연도 % 100 == 0연도 % 400 == 0인 경우 해당 연도는 윤년입니다.

다음 섹션에서는 연도가 윤년인지 여부를 결정하는 완전한 Python 구현을 제공합니다. 윤년 개념을 근본적으로 이해한 후 윤년인지 아닌지 확인하기 위해 다양한 구현을 살펴보겠습니다.

Python의 간단한 if-else 구성을 통해 윤년 결정

다음 구현에서는 간단한 if-else 구문을 사용하여 윤년을 결정합니다.

  1. 주어진 연도 입력에 대해 먼저 두 번째 조건이 충족되는지 확인합니다. 그렇다면 긍정적인 판단을 내립니다(즉, 해당 연도는 윤년입니다).
  2. 입력 연도가 3번 줄에 주어진 복합 조건을 충족하지 않으면 입력 연도가 세 번째 조건을 따르는지 확인하고 그에 따라 결정을 표시합니다.
  3. 이제 연도가 위에서 언급한 조건 중 하나라도 충족되지 않으면 윤년이 아니라고 결론을 내립니다.

예제 코드:

yearValue = int(input("Enter a year: "))
# here, yearValue means the year we want to check.
if yearValue % 4 == 0 and yearValue % 100 != 0:  # condition 2
    print(yearValue, "is a leap year")
elif yearValue % 4 == 0 and yearValue % 100 == 0:  # condition 3
    if yearValue % 400 == 0:
        print(yearValue, "qualifies as a leap year")
    else:
        print(yearValue, "does not qualify as a leap year")
else:
    print(yearValue, "does not qualify as a leap year")  # Condition 1

이제 서로 다른 입력 값을 사용하여 세 가지 조건 각각에서 프로그램을 평가합니다.

첫 번째 조건을 평가하는 출력:

Enter a year: 2027
2027 does not qualify as a leap year

두 번째 조건을 평가하는 출력:

Enter a year: 2024
2024 is a leap year

세 번째 조건을 평가하는 출력:

Enter a year: 4000
4000 qualifies as a leap year

Python의 Calendar 모듈을 통해 윤년 결정

Python의 calendar 모듈은 날짜와 관련된 계산을 수행하는 신뢰할 수 있는 도구 중 하나입니다. 이것은 유럽 관례(즉, 월요일을 주의 첫 번째 요일로 표시)를 따르고 Python의 Unix cal 프로그램에 해당하는 역할을 합니다.

날짜 입력 및 조작(달력 표시 포함)을 수행하는 여러 유틸리티를 제공합니다. calendar 모듈이 제공하는 기능의 자세한 목록은 여기에서 찾을 수 있습니다.

isleap() 메서드는 calendar 모듈의 기능 중 하나입니다. calendar 모듈과 isleap() 메서드의 사용을 이해하기 위해 다음 예제를 살펴보겠습니다.

예제 코드:

import calendar

yearValue = int(input("Enter a year: "))
if calendar.isleap(yearValue):
    print(yearValue, "qualifies as a leap year")
else:
    print(yearValue, "does not qualify as a leap year")

위 코드의 첫 번째 줄은 calendar 모듈을 가져옵니다. 두 번째 줄은 사용자로부터 정수 연도 입력을 받아 이를 yearValue 변수에 할당합니다.

calendar.isLeap() 메서드는 정수 연도 값을 사용하고 인수가 윤년인지 여부에 따라 true 또는 false를 반환합니다. 따라서 개인화된 메시지를 표시하기 위해 결정문을 적용할 수 있습니다.

다른 연도에 대해 프로그램을 실행하여 이 코드를 테스트해 보겠습니다.

첫 실행:

Enter a year: 2027
2027 does not qualify as a leap year

두 번째 실행:

Enter a year: 2024
2024 qualifies as a leap year

세 번째 실행:

Enter a year: 4000
4000 qualifies as a leap year

Python의 Calendar 모듈을 사용하여 조건부 연산자를 통해 윤년 결정

조건 연산자를 calendar 모듈과 결합하여 동일한 결과를 얻을 수 있습니다. 조건 연산자는 간단한 if-else 구문을 대신하여 사용할 수 있는 삼항 조건 구문입니다.

예제 코드:

import calendar

y = int(input("Enter a year: "))

# [statement_on_True] if [condition] else [statement_on_false]
print(y, "is a leap year") if (calendar.isleap(y)) else print(y, "is not a leap year")

위의 코드는 조건 연산자를 사용하여 연도가 윤년인지 여부를 표시합니다. 조건부 연산자의 구문은 코드 4번 줄에 잘 설명되어 있습니다.

여러 실행에 대한 출력:

첫 실행:

Enter a year: 2027
2027 is not a leap year

두 번째 실행:

Enter a year: 2024
2024 is a leap year

세 번째 실행:

Enter a year: 4000
4000 is a leap year

calendar 모듈 사용을 건너뛰려면 삼항 조건 연산자와 함께 간단한 복합 조건을 사용할 수 있습니다.

또한 원하는 프로그램을 구현하기 위한 다른 많은 옵션이 있습니다(예: match-case 구조). 우리는 이것을 괴짜들이 다양한 변형을 탐색하고 구현하도록 했습니다.

관련 문장 - Python DateTime