파이썬 조건문(if, elif, else) 완벽 정리: 비교·논리 연산자, 삼항 연산자 한 번에
파이썬 조건문 사용법을 한 곳에 모았습니다. if-elif-else 기본, 비교·논리 연산자, 조건 체이닝, 삼항 연산자, is None 체크, truthy·falsy 개념까지. 모든 예제는 복사해서 바로 실행할 수 있습니다.
파이썬 입문자가 반복문 다음으로 가장 많이 검색하는 주제가 조건문입니다. "파이썬 if문", "elif 사용법", "and or 차이", "삼항 연산자"… 매번 비슷한 걸 찾게 되죠.
이 글은 파이썬 조건문의 핵심을 한 곳에 모았습니다. if/elif/else 기본부터 비교·논리 연산자, 삼항 연산자, 실무에서 자주 놓치는 함정까지 전부 복사해서 바로 쓸 수 있게 정리했습니다. 북마크해두고 필요할 때마다 꺼내 쓰세요.
동작 환경: Python 3.x (match-case는 3.10+ 필요)
if / elif / else 기본
score = 85
if score >= 90:
print("A")
elif score >= 80:
print("B")
elif score >= 70:
print("C")
else:
print("F")
# 출력: B
파이썬은 중괄호 {} 대신 **들여쓰기(indentation)**로 블록을 구분합니다. 같은 블록 안의 코드는 들여쓰기 칸 수가 반드시 같아야 하며, 보통 스페이스 4칸을 씁니다.
# ❌ 들여쓰기가 다르면 에러
if True:
print("a")
print("b") # IndentationError!
비교 연산자 총정리
a, b = 5, 3
a == b # False — 같다
a != b # True — 다르다
a > b # True — 크다
a < b # False — 작다
a >= b # True — 크거나 같다
a <= b # False — 작거나 같다
가장 흔한 실수 — =(대입)과 ==(비교)를 헷갈리는 것입니다.
x = 5
if x = 5: # ❌ SyntaxError! 대입 연산자는 조건식에 못 씀
pass
if x == 5: # ✅ 올바른 비교
pass
논리 연산자 (and, or, not)
여러 조건을 조합할 때 사용합니다.
age = 25
has_ticket = True
if age >= 18 and has_ticket:
print("입장 가능")
if age < 18 or not has_ticket:
print("입장 불가")
# 여러 조건 조합
if (age >= 18 and age < 65) or has_ticket:
print(...)
| 연산자 | 의미 | 예시 |
|---|---|---|
and | 둘 다 참이어야 참 | A and B |
or | 하나라도 참이면 참 | A or B |
not | 참/거짓 반전 | not A |
조건 체이닝 (범위 검사)
파이썬은 비교 연산자를 이어 쓸 수 있어 다른 언어보다 훨씬 간결합니다.
x = 15
# 다른 언어 스타일 (가능은 하지만 장황함)
if x >= 0 and x < 100:
print("범위 안")
# 파이썬다운 방식 (체이닝)
if 0 <= x < 100:
print("범위 안") # 위와 동일한 결과, 훨씬 간결
in으로 여러 값 한 번에 체크
day = "토"
# 여러 elif 대신
if day == "토" or day == "일":
print("주말")
# in을 쓰면 훨씬 깔끔
if day in ("토", "일"):
print("주말")
if day not in ("토", "일"):
print("평일")
삼항 연산자 (조건부 표현식)
한 줄로 if-else를 표현합니다. 검색량이 매우 높은 패턴입니다.
x = 10
# 값 = 참일때 if 조건 else 거짓일때
result = "짝수" if x % 2 == 0 else "홀수"
# 기본값 처리에 자주 사용
name = user_input if user_input else "익명"
# or를 이용한 축약 (falsy 값 주의 필요)
name = user_input or "익명"
중첩도 가능하지만, 두 단계를 넘어가면 가독성이 급격히 떨어지므로 일반 if-elif-else로 바꾸는 것이 좋습니다.
grade = "A" if score >= 90 else "B" if score >= 80 else "C" # 이 정도가 한계
None 체크 (is None vs == None)
None 비교는 ==가 아니라 is를 쓰는 것이 파이썬 표준 관례입니다.
x = None
if x is None: # ✅ 권장
print("값 없음")
if x == None: # ⚠️ 대부분 동작은 하지만 관례상 지양
print("값 없음")
if x is not None: # ✅ None이 아님을 확인
print("값 있음")
is는 객체 자체가 같은지(식별자 비교), ==는 값이 같은지를 비교합니다. None은 프로그램 전체에서 단 하나뿐인 객체이므로 is로 비교하는 것이 정확하고 빠릅니다.
Truthy / Falsy — 조건식에서 값 자체를 검사
파이썬은 bool이 아닌 값도 조건문에 넣으면 자동으로 참/거짓으로 취급합니다.
# 다음 값들은 모두 False로 취급됨 (Falsy)
if 0: ... # False
if "": ... # False (빈 문자열)
if []: ... # False (빈 리스트)
if {}: ... # False (빈 딕셔너리)
if None: ... # False
# 나머지는 모두 True로 취급됨 (Truthy)
if [1, 2]: ... # True (원소가 있는 리스트)
if "hi": ... # True (내용 있는 문자열)
# 실전 활용: 빈 리스트 체크
arr = []
if arr: # 원소가 있을 때만 실행
print(arr[0])
if not arr: # 비어있을 때 처리
print("리스트가 비어있음")
match-case (Python 3.10+)
다른 언어의 switch문과 비슷한 구조입니다. 여러 값을 분기할 때 elif 체인보다 깔끔합니다.
def handle(status):
match status:
case 200:
return "성공"
case 404:
return "찾을 수 없음"
case 500 | 502 | 503: # 여러 값을 하나로 묶기
return "서버 오류"
case _: # default (그 외 모든 경우)
return "알 수 없음"
3.10 미만 버전에서는 if-elif-else나 딕셔너리 매핑으로 대체합니다.
result = {200: "성공", 404: "찾을 수 없음"}.get(status, "알 수 없음")
자주 묻는 질문
Q. elif 없이 if를 여러 개 쓰면 안 되나요?
가능은 하지만 의미가 다릅니다. if를 여러 번 쓰면 조건이 참일 때마다 각각 실행되고, elif는 앞 조건이 거짓일 때만 검사합니다. 배타적인 분기가 필요하면 반드시 elif를 쓰세요.
Q. == 와 is 언제 구분해서 써야 하나요?
값이 같은지 비교할 땐 ==, 객체가 완전히 동일한지(주로 None과 비교할 때)는 is를 씁니다. 숫자나 문자열 비교에는 ==를 쓰는 것이 일반적입니다.
Q. 삼항 연산자는 언제 쓰는 게 좋나요? 간단한 값 할당이나 기본값 처리처럼 한 줄로 끝나는 경우에 적합합니다. 조건이 복잡하거나 실행할 코드가 여러 줄이면 일반 if-else 블록을 쓰는 것이 가독성 면에서 낫습니다.
마무리
파이썬 조건문의 핵심은 분기는 if-elif-else, 여러 조건 조합은 and/or/not, 범위 검사는 체이닝(0 <= x < 100), 간단한 값 선택은 삼항 연산자입니다. 그리고 None 비교는 is로, 빈 값 체크는 truthy/falsy 성질을 활용하면 코드가 한결 깔끔해집니다.
=과 ==을 헷갈리는 실수와 과도한 삼항 연산자 중첩만 조심하면, 대부분의 조건 분기 상황을 자신 있게 작성할 수 있습니다. 필요할 때마다 이 글을 다시 펼쳐 해당 섹션을 복사해 쓰세요.
함께 보면 좋은 글: [파이썬 반복문 완벽 정리], [파이썬 리스트 완벽 정리]