인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

kohailey94님의 프로필 이미지
kohailey94

작성한 질문수

데이터 분석을 위한 파이썬: 입문부터 꿀팁까지

제어문 연습문제 풀이

If 윤년판별기 질문

작성

·

302

0

해답지와 다른데 elif 로 해도 되나요? 오류가 나는 이유도 잘 모르겠습니다 ㅠㅠ

그리고, 해답지에 if가 3번 나오고 나서 else 가 3번 나온 구조도 신기합니다. 왜 이렇게 하는 건가요? 첫번째 if 랑 첫번째 else 랑 이런식으로 짝꿍인데 그냥 띄어서 쓴건가요?

if year % 4 == 0: if year % 100 == 0: if year % 400 == 0: print(year, "년도는 윤년입니다") else: print(year, "년도는 평년입니다") else: print(year, "년도는 윤년입니다") else: print(year, "년도는 평년입니다")

 

답변 2

0

지식공유자 J님의 프로필 이미지
지식공유자 J
지식공유자

1. elif를 사용해서도 만들 수 있습니다.
- 다만 elif 들여쓰기를 if, else와 같은 위치에 맞춰야 합니다. 파이썬에는 indent(들여쓰기)가 중요합니다.
- elif를 사용한다면 올바를 정답은 다음과 같아요. (작성하신 코드대로라면 year(x)가 4로 나눠진다면, 100, 400으로 나누는 조건문은 아예 실행되지 않습니다.)

# 윤년 판별 조건을 elif를 사용하여 순차적으로 검사
if year % 400 == 0:
    print(year, "년도는 윤년입니다")   # 400으로 나누어떨어지면 윤년
elif year % 100 == 0:
    print(year, "년도는 평년입니다")   # 100으로 나누어떨어지지만 400으로는 나누어떨어지지 않으면 평년
elif year % 4 == 0:
    print(year, "년도는 윤년입니다")   # 4로 나누어떨어지면 윤년
else:
    print(year, "년도는 평년입니다")  # 그 외의 경우 평년

2. if가 세번 나오고 else가 세번 나오는데, 같은 들여쓰기의 위치에 있는 것끼리 묶어서 생각하면 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다.
kohailey94님, 윤년 판별기 코드에서 발생한 오류와 if-else 구조에 대해 설명드리겠습니다.

먼저, elif 구문에 사용하신 × 문자는 수학적 곱셈 기호이지만, 파이썬에서는 곱셈을 나타내는 연산자로 *를 사용합니다. elif 구문에서 × 대신 *를 사용해야 하므로, 이 부분을 수정하시면 오류가 해결됩니다.

해답지의 if-else 구조는 중첩된 if, 즉 중첩 조건문을 나타냅니다. 이 구조에서 각 if 문은 반드시 그에 대응하는 else 문이 뒤따르게 됩니다. 이러한 구조는 조건을 순차적으로 검사할 때 사용됩니다. 예를 들면, 윤년의 경우를 점검할 때 4로 나누어 떨어지는지 확인하고, 그렇다면 100으로 나누어 떨어지는지 검사하며, 마지막으로 400으로 나누어 떨어지는지 확인하는데, 이런 조건들은 모두 충족되어야 윤년으로 간주됩니다. 따라서 중첩된 if 구문을 통해 이러한 조건들을 세밀하게 구분하고 있습니다.

아래는 수정된 코드 예시입니다.

year = int(input("연도를 입력하세요: "))

if year % 4 == 0:
    if year % 100 == 0:
        if year % 400 == 0:
            print(year, "년도는 윤년입니다.")
        else:
            print(year, "년도는 평년입니다.")
    else:
        print(year, "년도는 윤년입니다.")
else:
    print(year, "년도는 평년입니다.")

이 코드에서는 먼저 4로 나누어 떨어지는지 확인한 후, if year % 100 == 0의 조건을 체크하고, 만약 100으로도 나누어 떨어진다면 마지막 조건인 if year % 400 == 0을 검사하여 최종적으로 해당 연도가 윤년인지 확인합니다. 모든 조건이 충족되지 않는다면 평년으로 분류합니다.

이 구조는 로직의 흐름을 따라가며, 각 조건에 따라 실행될 코드를 명확하게 할 때 유용합니다. 더 궁금한 점이 있으시면 언제든 문의해 주세요.

kohailey94님의 프로필 이미지
kohailey94

작성한 질문수

질문하기