프로그래밍을 배울 때 가장 먼저 마주하는 개념 중 하나가 조건문입니다. 파이썬에서 조건문은 프로그램의 흐름을 결정하는 핵심 도구인데요. 오늘은 단순한 문법 설명을 넘어, 실제 프로젝트에서 어떻게 활용하는지 구체적인 예시와 함께 알아보겠습니다. 특히 실무에서 자주 마주하는 함정과 해결 방법도 공유할 예정이니 끝까지 읽어보시길 추천합니다.
파이썬 조건문의 핵심 원리
1. 조건문이 작동하는 방식
파이썬의 if
문은 "만약 ~라면"이라는 인간의 사고 방식을 코드로 옮긴 것입니다. 기본 구조는 간단하지만, 그 안에 숨겨진 원리를 정확히 이해하는 것이 중요합니다.
temperature = 28
if temperature >= 30:
print("에어컨을 켭니다.")
else:
print("선풍기로 충분합니다.")
여기서 temperature >= 30
부분이 조건식으로, 이 표현식이 True
를 반환하면 해당 코드 블록이 실행됩니다. 중요한 점은 파이썬이 들여쓰기로 코드 블록을 구분한다는 것입니다. 공백 4칸이나 탭(Tab)을 일관되게 사용해야 오류를 피할 수 있습니다.
2. 진짜 혼동하기 쉬운 Truthy/Falsy
많은 분들이 오해하는 부분이 있는데, 파이썬에서는 False
외에도 다양한 값이 조건문에서 False
로 처리됩니다.
Falsy 값의 대표적인 예시:
- 숫자 0 (0, 0.0 등)
- 빈 컨테이너 (리스트, 딕셔너리, 문자열 등)
None
이 특징을 활용하면 코드를 더 간결하게 작성할 수 있습니다. 예를 들어 사용자 입력값을 검증할 때 유용하게 쓸 수 있죠.
user_name = input("이름을 입력하세요: ")
# 빈 문자열 체크 (len(user_name) == 0 과 동일)
if not user_name.strip():
print("이름을 반드시 입력해야 합니다!")
else:
print(f"{user_name}님, 환영합니다!")
실무에서 자주 쓰는 다중 조건 처리
1. elif의 숨은 비밀
elif
는 else if
의 줄임말로, 여러 조건을 순차적으로 검사할 때 사용합니다. 여기서 주의할 점은 처음 만족하는 조건만 실행된다는 것입니다.
age = 25
membership = "gold"
if age < 20:
print("청소년 할인 적용")
elif membership == "vip":
print("VIP 우대 할인")
elif age >= 65:
print("경로 우대 할인")
else:
print("일반 요금 적용")
이 코드에서 25세 gold 회원은 아무 조건에도 해당되지 않아 일반 요금으로 처리됩니다. 조건의 순서가 결과에 큰 영향을 미치기 때문에, 자주 발생하는 조건을 상단에 배치하는 것이 성능 최적화에 도움이 됩니다.
2. 조건문 속의 조건문
복잡한 비즈니스 로직을 처리할 때는 중첩 조건문이 필수적입니다. 하지만 남용하면 코드 가독성이 떨어지므로 주의가 필요합니다.
# 주문 시스템 예시
is_member = True
order_amount = 120000
payment_method = "credit"
if is_member:
if order_amount > 100000:
if payment_method == "credit":
print("추가 5% 할인 적용")
else:
print("기본 할인 3% 적용")
else:
print("회원 기본 할인 1% 적용")
else:
print("비회원은 할인 없음")
이 경우 3단계 중첩으로 복잡해 보이지만, 실제 쇼핑몰 시스템에서는 흔히 볼 수 있는 구조입니다. 이런 코드를 작성할 때는 각 조건문 바로 위에 주석으로 조건의 의도를 설명하는 것이 좋습니다.
개발자라면 꼭 알아야 할 고급 기법
1. 비교 연산자의 숨은 기능
파이썬은 다른 언어와 달리 연속 비교가 가능합니다. 이 기능을 잘 활용하면 코드를 더 직관적으로 만들 수 있습니다.
# 일반적인 방식
if x > 5 and x < 10:
print("범위 내 숫자")
# 파이썬 스타일
if 5 < x < 10:
print("더 읽기 쉬운 표현")
2. 논리 연산자의 진짜 역할
and
와 or
은 단순히 True/False를 반환하지 않습니다. 실제로는 마지막으로 평가한 값을 반환하는 특징이 있습니다.
result = 0 or "Hello" or True
print(result) # "Hello" 출력 (첫 번째 Truthy 값)
이 특징을 활용하면 기본값 설정 시 유용합니다.
# 사용자 설정이 없으면 기본값 사용
user_color = None
default_color = "blue"
color = user_color or default_color # "blue" 할당
파이썬 3.10의 신기능: 구조적 패턴 매칭
최신 파이썬 버전에서는 match-case
문이 도입되면서 복잡한 조건 처리가 훨씬 쉬워졌습니다. 웹 API 응답 처리 같은 시나리오에서 특히 유용합니다.
# HTTP 상태 코드 처리
def handle_status(code):
match code:
case 200 | 201:
return "성공"
case 404:
return "페이지 없음"
case 500 if datetime.now().hour > 22:
return "야간 점검 중"
case _:
return "알 수 없는 오류"
print(handle_status(404)) # "페이지 없음" 출력
기존의 if-elif
체인보다 훨씬 직관적으로 다양한 조건을 처리할 수 있습니다.
실무에서 주의해야 할 함정 3가지
1. 변수 변경으로 인한 오류
x = 5
if 3 < x < 7:
x += 2 # 조건문의 x 값은 변경되지 않음
print(x) # 7 출력되지만 조건은 처음 x=5 기준
2. 부동소수점 비교 문제
# 잘못된 비교
a = 0.1 + 0.1 + 0.1
b = 0.3
print(a == b) # False 출력!
# 올바른 방법
import math
print(math.isclose(a, b)) # True
3. 가변 객체 비교 시 주의사항
list_a = [1,2,3]
list_b = [1,2,3]
print(list_a == list_b) # True (값 비교)
print(list_a is list_b) # False (객체 동일성 비교)
전문가의 코드 작성 팁
1. 조건문 간소화 기술
복잡한 조건은 별도 함수로 분리하면 가독성이 크게 향상됩니다.
# 개선 전
if (user.age >= 18
and user.has_license
and not user.is_drunk):
allow_driving = True
# 개선 후
def can_drive(user):
return all([
user.age >= 18,
user.has_license,
not user.is_drunk
])
if can_drive(current_user):
print("운전 가능")
2. 가독성 높이는 꿀팁
# 나쁜 예시
if (a>5 and b<3) or (c==4 and d!=2) or e in [1,3,5]:
# 좋은 예시
condition1 = a > 5 and b < 3
condition2 = c == 4 and d != 2
condition3 = e in {1,3,5} # 집합 사용으로 성능 향상
if condition1 or condition2 or condition3:
'파이썬 (Python)' 카테고리의 다른 글
파이썬 반복문 쉽게 배우기! 초보자도 금방 이해하는 방법 (1) | 2025.02.01 |
---|---|
파이썬 함수 정의부터 고급 활용까지: 초보자를 위한 체계적인 학습 가이드 (1) | 2025.01.31 |
파이썬 반복문 기초부터 활용까지: 초보자를 위한 가이드 (1) | 2025.01.31 |
변수와 데이터 타입 완전 정복! 파이썬 기초 개념 쉽게 배우기 (1) | 2025.01.30 |
파이썬 설치부터 실행까지 쉽게 따라 해보자! (2) | 2025.01.30 |