조건문(Conditional Statement): if-elif-else (다중 조건 처리)
1. 서론: 복잡한 세상, 다중 조건으로 판단하다
이전 챕터에서 우리는 if 문을 통해 특정 조건이 참일 때 코드를 실행하고, if-else 문을 통해 조건이 참일 때와 거짓일 때 각각 다른 코드를 실행하는 방법을 배웠습니다. 하지만 현실 세계의 문제들은 종종 두 가지 선택지만으로는 해결할 수 없는 복잡한 상황들을 포함합니다. 예를 들어, 학생의 점수에 따라 A, B, C, D, F 등급을 부여하거나, 현재 시간에 따라 아침, 점심, 저녁 인사를 다르게 해야 하는 경우처럼, 여러 가지 조건들을 순차적으로 검사하고 그에 맞는 동작을 수행해야 할 때가 있습니다. 이때 필요한 것이 바로 if-elif-else 문입니다. if-elif-else 문은 여러 개의 조건을 순차적으로 평가하여, 가장 먼저 True로 평가되는 조건에 해당하는 코드 블록만을 실행하도록 프로그램의 흐름을 제어합니다. 이 챕터에서는 if-elif-else 문의 기본 구조와 다양한 활용법에 대해 깊이 있게 알아보겠습니다. if-elif-else 문을 마스터하는 것은 여러분의 파이썬 프로그램에 더욱 정교하고 다층적인 판단 능력을 부여할 것입니다.
2. if-elif-else 문의 기본 구조
if-elif-else 문은 다음과 같은 기본 구조를 가집니다.
if 조건식1:
# 조건식1이 True일 때 실행될 코드 블록
elif 조건식2:
# 조건식1이 False이고, 조건식2가 True일 때 실행될 코드 블록
elif 조건식3:
# 조건식1, 조건식2가 False이고, 조건식3이 True일 때 실행될 코드 블록
# ... (필요에 따라 elif 블록을 여러 개 추가할 수 있습니다)
else:
# 위의 모든 조건식들이 False일 때 실행될 코드 블록
설명:
if: 첫 번째 조건을 정의합니다.elif(else if의 줄임말):if조건식이False일 때, 다음으로 검사할 조건을 정의합니다.elif블록은 여러 개를 추가할 수 있습니다.else:if와 모든elif조건식들이False로 평가될 때 실행될 코드 블록을 정의합니다.else블록은 선택 사항이며, 필요에 따라 생략할 수 있습니다.:(콜론): 각 조건식 뒤에는 반드시 콜론을 붙여야 합니다.- 코드 블록: 각
if,elif,else아래에 오는 코드들은 반드시 들여쓰기(Indentation)를 해야 합니다. 파이썬은 들여쓰기를 통해 코드 블록을 구분하므로, 들여쓰기 규칙을 정확히 지키는 것이 매우 중요합니다.
중요: if-elif-else 문은 위에서부터 아래로 순차적으로 조건을 검사합니다. 한 번 True로 평가된 조건의 코드 블록이 실행되면, 나머지 elif와 else 블록은 모두 건너뛰고 조건문 전체가 종료됩니다.
예시:
score = 85
if score >= 90:
print("학점: A")
elif score >= 80:
print("학점: B")
elif score >= 70:
print("학점: C")
elif score >= 60:
print("학점: D")
else:
print("학점: F")
print("성적 처리 완료.")
# 출력:
# 학점: B
# 성적 처리 완료.
위 예시에서 score는 85이므로:
score >= 90(85 >= 90)은False입니다.elif score >= 80(85 >= 80)은True입니다. 따라서print("학점: B")가 실행됩니다.학점: B가 출력된 후, 나머지elif와else블록은 모두 건너뛰고if-elif-else문 전체가 종료됩니다.
3. if-elif-else 문 활용 예시
다양한 상황에서 if-elif-else 문을 어떻게 활용할 수 있는지 살펴보겠습니다.
3.1. 양수/음수/0 판별
number = 0
if number > 0:
print(f"{number}은(는) 양수입니다.")
elif number < 0:
print(f"{number}은(는) 음수입니다.")
else:
print(f"{number}은(는) 0입니다.")
# 출력: 0은(는) 0입니다.
3.2. 요일별 메시지 출력
day_of_week = "Wednesday"
if day_of_week == "Monday":
print("월요일입니다. 한 주의 시작!")
elif day_of_week == "Tuesday":
print("화요일입니다. 힘내세요!")
elif day_of_week == "Wednesday":
print("수요일입니다. 주중의 중간!")
elif day_of_week == "Thursday":
print("목요일입니다. 곧 주말!")
elif day_of_week == "Friday":
print("금요일입니다. 불금!")
else:
print("주말입니다. 푹 쉬세요!")
# 출력: 수요일입니다. 주중의 중간!
3.3. 사용자 입력에 따른 메뉴 선택
print("--- 메뉴 ---")
print("1. 커피")
print("2. 차")
print("3. 주스")
choice = input("메뉴를 선택하세요 (1, 2, 3): ")
if choice == "1":
print("커피를 선택하셨습니다.")
elif choice == "2":
print("차를 선택하셨습니다.")
elif choice == "3":
print("주스를 선택하셨습니다.")
else:
print("잘못된 선택입니다. 다시 시도해주세요.")
# 사용자가 '2'를 입력하면: 차를 선택하셨습니다.
4. if-elif-else 문 사용 시 주의사항
4.1. 조건식의 순서
if-elif-else 문에서 조건식의 순서는 매우 중요합니다. 조건은 위에서부터 아래로 순차적으로 평가되며, 한 번 True가 되면 그 아래의 조건들은 더 이상 검사되지 않습니다. 따라서 더 일반적인 조건보다는 더 구체적인 조건을 먼저 배치하는 것이 중요합니다.
잘못된 순서의 예시:
score = 95
if score >= 60: # 이 조건이 먼저 True가 되어버립니다.
print("학점: D")
elif score >= 90:
print("학점: A")
else:
print("학점: F")
# 출력: 학점: D (의도와 다름)
이 경우 score가 95점임에도 불구하고 score >= 60 조건이 먼저 True가 되어 학점: D가 출력됩니다. 올바른 순서는 더 높은 점수 조건을 먼저 검사하는 것입니다.
올바른 순서의 예시:
score = 95
if score >= 90:
print("학점: A")
elif score >= 80:
print("학점: B")
elif score >= 70:
print("학점: C")
elif score >= 60:
print("학점: D")
else:
print("학점: F")
# 출력: 학점: A (의도대로)
4.2. 모든 경우를 고려했는지 확인
if-elif-else 문을 작성할 때는 가능한 모든 경우의 수를 고려하여 조건식을 작성해야 합니다. else 블록은 모든 조건이 False일 때 실행되므로, 예상치 못한 입력이나 상황에 대한 ‘안전망’ 역할을 합니다. else 블록을 생략할 경우, 어떤 조건도 True가 아닐 때 아무런 동작도 하지 않을 수 있습니다.
5. 중첩 if-elif-else 문과 논리 연산자 비교
복잡한 조건을 처리할 때 중첩 조건문을 사용할 수도 있지만, 논리 연산자(and, or)를 활용하여 조건을 조합하는 것이 코드의 가독성을 높이는 데 더 효과적일 때가 많습니다.
중첩 조건문 예시:
age = 25
has_license = True
if age >= 18:
if has_license:
print("운전 가능합니다.")
else:
print("운전면허가 없습니다.")
else:
print("미성년자입니다.")
논리 연산자 사용 예시:
age = 25
has_license = True
if age >= 18 and has_license:
print("운전 가능합니다.")
elif age >= 18 and not has_license:
print("운전면허가 없습니다.")
else:
print("미성년자입니다.")
두 코드 모두 동일한 결과를 출력하지만, 논리 연산자를 사용한 두 번째 예시가 더 평평하고 읽기 쉬울 수 있습니다. 상황에 따라 적절한 방법을 선택하는 것이 중요합니다.
6. 결론: 프로그램의 다층적인 판단 능력
이 챕터를 통해 여러분은 파이썬의 if-elif-else 조건문의 기본 구조와 다양한 활용법을 익혔습니다. 여러 개의 조건을 순차적으로 검사하고, 가장 먼저 True로 평가되는 조건에 해당하는 코드 블록만을 실행하는 원리를 이해했습니다. 또한, 조건식의 순서가 중요하며, 모든 경우를 고려하여 else 블록을 활용하는 것이 중요하다는 점도 강조했습니다.
if-elif-else 문은 프로그램이 복잡한 현실 세계의 문제들을 해결하고, 다양한 상황에 따라 유연하게 반응하도록 만드는 데 필수적인 도구입니다. 사용자 입력에 따라 복잡한 메뉴를 처리하거나, 데이터의 여러 속성을 기반으로 분류하는 등, 여러분이 만들 프로그램의 지능적인 판단 능력을 한층 더 높여줄 것입니다.
이제 여러분은 파이썬 프로그램에 다층적인 판단 능력을 부여할 수 있게 되었습니다. 다음 챕터부터는 프로그램이 특정 작업을 반복적으로 수행하도록 하는 ‘반복문(Loop)’에 대해 본격적으로 학습할 것입니다. 조건문과 반복문은 프로그래밍의 두 기둥이므로, 오늘 배운 if-elif-else 문을 활용하여 다양한 시나리오를 가정하고 직접 프로그램을 만들어 보면서, 여러분의 파이썬 실력을 더욱 단단하게 다지세요!
