파이썬 프로그래밍에서 조건에 따라 다른 코드를 실행하는 선택 구조는 매우 중요하다. 특히 복잡한 조건을 처리해야 할 때 중첩 선택 구조가 필수적이다. 중첩 선택문은 영어로 Nested if statement라고 한다. Nested라는 단어에서 알 수 있듯, 중첩 선택문은 if문 안에 또 다른 if문이 들어가 있는 구조다. "이 안에 너 있다...."가 갑자기 왜 생각나지..ㅋㅋㅋ
중첩 선택문의 구조
중첩 선택문은 다음과 같은 구조를 가진다.
if 조건 1:
# 조건 1이 참일 때 실행되는 코드
if 조건 2:
# 조건 1과 조건 2가 모두 참일 때 실행되는 코드
else:
# 조건 1은 참이지만 조건 2는 거짓일 때 실행되는 코드
else:
# 조건 1이 거짓일 때 실행되는 코드
첫 번째 if문의 조건이 참일 경우에만 두 번째 if문이 실행된다. 즉, 조건 2를 검사하기 전에 조건 1이 먼저 참인지 확인하는 것이다. 예시를 통해 알아보자.
코드 작성 예시: 놀이공원에 온 아이
부모와 함께 놀이공원에 와서 롤러코스터를 타려는 아이가 있다고 상상해보자.
이 롤러코스터는 키가 140cm 이상이어야만 탈 수 있다. 하지만 키가 140cm 이상이여도 나이가 13세 미만이면 보호자가 반드시 동반해서 탑승해야 한다.
코드로 작성하기 전에 이 조건 2가지를 정리하면 다음과 같다.
- 조건 1: 키가 140cm 이상인가? (롤러코스터 탑승 조건)
- 조건 2: 나이가 13세 이상인가? (보호자 동반 없이 탑승 조건)
이제 롤러코스터를 탑승하려는 사람의 키와 나이를 각각 입력 받아 탑승 가능 여부와 보호자 동반 여부를 출력해주는 파이썬 프로그램을 만들어보자. (**단 여기서 입력 유효성 검사를 다루지는 않을 예정이므로 입력은 양의 정수로 받는다고 가정**)
height = int(input("키(cm)를 입력하세요: "))
age = int(input("나이를 입력하세요: "))
if height >= 140:
print("롤러코스터에 탑승할 수 있습니다.")
if age >= 13:
print("혼자 탑승할 수 있습니다.")
else:
print("보호자와 함께 탑승해야 합니다.")
else:
print("키가 140cm 미만이므로 롤러코스터를 탑승할 수 없습니다.")
코드 작동 원리
첫 번째 if문: 변수 height가 140 이상인지 확인함.
두 번째 if문: 첫 번째 if문의 조건이 참일 경우, 변수 age가 13 이상인지 확인함.
출력: 조건에 따라 다른 메시지를 출력함.
- 키가 140cm 이상이고 나이가 13세 이상인 경우: "롤러코스터에 탑승할 수 있습니다."와 "혼자 탑승할 수 있습니다."를 출력.
- 키가 140cm 이상이지만 나이가 13세 미만인 경우: "롤러코스터에 탑승할 수 있습니다."와 "보호자와 함께 탑승해야 합니다."를 출력.
- 키가 140cm 미만인 경우: "키가 140cm 미만이므로 롤러코스터를 탑승할 수 없습니다."를 출력.
이렇게 예시를 통해 중첩 선택 구조의 개념을 이해할 수 있다.
중첩 선택 구조는 여러 개의 조건을 조합하여 복잡한 상황을 처리할 수 있으며, 조건을 명확하게 구분하여 코드의 가독성을 높일 수 있다. 또한 다양한 조건에 따라 다른 동작을 수행하는 유연한 프로그램을 설계할 수 있다는 것도 장점이다.
중첩 선택 구조를 사용할 때 몇 가지 주의해야 할 점이 있다.
- 들여쓰기: 중첩된 if문은 들여쓰기를 사용하여 구분해야 한다. 들여쓰기가 잘못되면 오류가 발생하거나 의도치 않은 결과가 나올 수 있다.
- 조건 순서: 조건의 순서에 따라 결과가 달라질 수 있으므로, 조건을 신중하게 배치해야 한다.
- 가독성: 너무 많은 if문을 중첩하면 코드의 가독성이 떨어질 수 있으니 적절한 수준에서 중첩해야 한다.
지금까지 if문 안의 if문, 중첩선택구조에 대해 알아보았다.
다만 위에 제시된 코드 예문은 입력값의 유효성을 검증하는 과정이 생략되었다. 이 부분은 선택 구조보다는 반복 구조에서 설명하는 것이 더 적합할 것 같으니 다음 번에 반복 구조에 대해 포스팅할 때 같은 예시를 활용해 보도록 한다.
그럼 오늘은 여기까지~!