[파이썬 100강] 03강. 조건문 if/elif/else로 흐름 제어하기

[파이썬 100강] 03강. 조건문 if/elif/else로 흐름 제어하기

조건문은 프로그램의 "판단 능력"을 만드는 핵심 문법입니다.
지금까지는 값을 저장하고 계산해서 출력하는 데 집중했다면, 이제부터는 상황에 따라 다른 동작을 선택할 수 있게 됩니다.
실무에서는 로그인 상태, 권한 체크, 주문 금액별 할인, 점수 등급 계산처럼 거의 모든 로직에 조건문이 들어갑니다.


핵심 개념

if / elif / else는 위에서 아래로 순서대로 조건을 검사합니다.

  • if: 첫 번째 조건이 참(True)인지 확인
  • elif: 앞의 조건이 거짓일 때만 다음 조건 확인
  • else: 어떤 조건도 만족하지 않을 때 실행

핵심은 **"처음으로 참이 된 블록 하나만 실행된다"**는 점입니다.

>>> score = 83
>>> if score >= 90:
...     grade = "A"
... elif score >= 80:
...     grade = "B"
... elif score >= 70:
...     grade = "C"
... else:
...     grade = "D"
...
>>> print("등급:", grade)
등급: B

위 예제에서 score = 83일 때 if score >= 90은 거짓이므로 넘어가고, elif score >= 80에서 참이 되어 grade = "B"가 결정됩니다. 이후 아래 elif, else는 더 이상 보지 않습니다.


기본 사용

조건문은 비교 연산자와 논리 연산자를 함께 쓰면 훨씬 강력해집니다.

  • 비교 연산자: ==, !=, >, <, >=, <=
  • 논리 연산자: and, or, not

1) 나이 기반 입장 가능 여부

>>> age = 19
>>> has_id = True
>>> if age >= 19 and has_id:
...     print("입장 가능합니다.")
... else:
...     print("입장할 수 없습니다.")
...
입장 가능합니다.

2) 배송비 계산 (실무형 분기)

>>> order_amount = 32000
>>> is_membership = False
>>> if order_amount >= 50000:
...     shipping_fee = 0
... elif is_membership and order_amount >= 30000:
...     shipping_fee = 0
... else:
...     shipping_fee = 3000
...
>>> print(f"결제 금액: {order_amount}원, 배송비: {shipping_fee}원")
결제 금액: 32000원, 배송비: 3000원

3) 문자열 조건 처리 (입력값 검증)

>>> user_input = "  YES "
>>> normalized = user_input.strip().lower()
>>> if normalized == "yes":
...     print("동의 처리 완료")
... elif normalized == "no":
...     print("미동의 처리 완료")
... else:
...     print("yes/no로 입력해주세요")
...
동의 처리 완료

사용자 입력은 공백/대소문자 때문에 예상과 다르게 들어오는 경우가 많습니다. 그래서 strip(), lower()로 먼저 정규화하고 분기하는 습관이 중요합니다.


자주 하는 실수

실수 1) if를 연속으로 써서 중복 실행되는 문제

조건이 상호배타적일 때는 if 여러 개보다 if-elif-else가 맞습니다.

>>> score = 95
>>> if score >= 90:
...     print("A")
... if score >= 80:
...     print("B 이상")
...
A
B 이상

위 코드는 의도와 다르게 두 줄 모두 출력됩니다. 만약 한 등급만 출력하고 싶다면 elif로 연결해야 합니다.

>>> score = 95
>>> if score >= 90:
...     print("A")
... elif score >= 80:
...     print("B")
... else:
...     print("C 이하")
...
A

실수 2) 조건 순서를 잘못 배치

넓은 조건을 먼저 쓰면 뒤의 세부 조건이 영원히 실행되지 않을 수 있습니다.

>>> temp = 37
>>> if temp >= 0:
...     print("영상")
... elif temp >= 30:
...     print("폭염")
...
영상

temp >= 30은 사실상 도달 불가능해졌습니다. 더 구체적인 조건을 먼저 배치해야 합니다.

실수 3) === 혼동

조건에서는 비교(==)를 써야 합니다. 할당(=)은 문법 오류로 이어집니다.

>>> x = 10
>>> if x == 10:
...     print("x는 10입니다")
...
x는 10입니다

오늘의 결론

조건문을 잘 쓴다는 건, 프로그램이 현실 세계의 규칙을 올바르게 판단하도록 만드는 일입니다.
오늘 배운 핵심은 세 가지입니다.

  1. if-elif-else는 위에서 아래로 검사하며, 처음 참인 한 블록만 실행된다.
  2. 조건 순서는 구체적인 조건 → 일반적인 조건 순으로 배치한다.
  3. 입력값은 바로 비교하지 말고 정규화(strip, lower) 후 분기하면 오류가 줄어든다.

이 세 가지만 지켜도 조건문 관련 버그의 상당수를 초기에 막을 수 있습니다.


연습문제

  1. score 값을 받아 A/B/C/D 등급을 출력하는 코드를 작성해보세요. (90/80/70 기준)
  2. amount(구매금액)과 is_vip(VIP 여부)를 사용해 배송비를 계산하세요.
    • 5만원 이상 무료
    • VIP이면서 3만원 이상 무료
    • 그 외 3000원
  3. 문자열 입력 " Y ", "n", "No" 같은 값을 받아 yes/no로 정규화한 뒤, 동의 여부 메시지를 출력해보세요.

이전 강의 정답 (02강 연습문제)

  1. "150", "2.5"를 숫자로 바꿔 더하기
>>> a = "150"
>>> b = "2.5"
>>> result = int(a) + float(b)
>>> print(result)
152.5
  1. bool(0), bool(-1), bool(" "), bool("") 확인
>>> print(bool(0), bool(-1), bool(" "), bool(""))
False True True False
  1. "99.9"를 최종적으로 정수 99로 변환
>>> value = "99.9"
>>> converted = int(float(value))
>>> print(converted)
99

실습 환경/재현 정보

  • 실행 환경: conda env python100 (Python 3.11.14)