바이브코더를 위한 파이썬 기초 3편: 조건문 if·elif·else와 순서 버그
파이썬 조건문 if·elif·else는 처음 참인 갈래 하나만 실행한다. 조건 순서 때문에 95점이 B가 되는 버그, =와 ==의 차이, 경계값으로 AI 조건문을 검사하는 법을 정리했다.
"점수가 90점 이상이면 A, 70점 이상이면 B"처럼 상황에 따라 다르게 움직이는 코드는 모두 조건문으로 만든다. AI가 이런 코드를 짜 주면 겉보기엔 멀쩡한데, 조건의 순서 하나 때문에 결과가 틀리는 경우가 있다. 이 글은 '바이브코더를 위한 파이썬 기초' 10편 중 3편으로, 비교 연산자와 if / elif / else를 정리하고 AI 코드에서 조건문을 검사하는 법을 다룬다. 예제는 Python 3.15 기준으로 설명하며 Python 3.14.2에서 실행해 결과를 확인했다.
핵심 요약
- 조건이 참일 때만 그 아래 들여쓴 코드가 실행된다.
if / elif / else는 위에서부터 검사해 처음 참인 갈래 하나만 실행하고 멈춘다.- 그래서 더 까다로운(좁은) 조건을 위에 써야 한다. 순서가 틀리면 95점이 B가 된다.
- 비교는
==, 값을 붙이는 건=다.if x = 3:은 문법 오류다.
조건문은 갈림길 표지판이다
신호등을 생각해 보자. 빨간불이면 멈춘다. 아니면 초록불인지 보고, 초록불이면 간다. 둘 다 아니면 조심해서 간다. 조건문도 이렇게 위에서부터 하나씩 확인한다.
갈림길 표지판에 비유할 수 있지만 한계가 있다. 현실의 표지판은 여러 방향을 함께 가리킬 수 있지만, if / elif / else는 한 길만 고른다. 첫 번째로 맞는 길을 고르는 순간 나머지는 보지도 않는다.
기본 모양: 점수를 등급으로 바꾸기
score = 78
if score >= 90:
grade = "A"
elif score >= 70:
grade = "B"
else:
grade = "C"
print(grade)
print(score >= 70 and score < 90)
B
True
읽는 법은 이렇다.
if 조건:다음 줄은 들여쓰기(보통 스페이스 4칸)를 한다. 들여쓴 줄만 그 조건에 속한다.elif는 "앞의 조건이 거짓이면, 이번엔 이걸 본다"이다.else는 "위 조건이 모두 거짓이면"이다. 조건을 쓰지 않는다.and는 둘 다 참일 때 참,or는 하나라도 참이면 참이다.
자주 쓰는 비교 연산자는 다음과 같다.
| 연산자 | 뜻 | 예 |
|---|---|---|
== | 같다 | answer == "yes" |
!= | 다르다 | status != "done" |
>, < | 크다, 작다 | age > 19 |
>=, <= | 크거나 같다, 작거나 같다 | score >= 90 |
흔한 함정: elif 순서는 상관없을까
순서를 뒤집고 95점을 넣어 보자.
score = 95
if score >= 70:
grade = "B"
elif score >= 90:
grade = "A"
print(grade)
B
95점인데 B가 나온다. 첫 조건 score >= 70이 이미 참이라 거기서 멈추고, score >= 90은 검사조차 하지 않기 때문이다. 오류 메시지도 나오지 않는다. 코드는 잘 돌아가는데 결과만 틀리는 이런 버그가 AI 코드 리뷰에서 놓치기 쉽다.
고치는 원칙은 하나다. 더 좁은(까다로운) 조건을 먼저 쓴다. 90점 이상이 70점 이상보다 좁으니 위에 둔다.
흔한 함정 2: =와 ==를 헷갈린다
if x = 3:은 실행되지 않고 SyntaxError(문법 오류)가 난다. =는 이름을 붙이는 기호(2편)이고, 비교는 ==로 해야 한다. 오류 메시지를 보고 당황하지 말고, 조건 안에 =가 하나만 있는지부터 확인하자.
AI가 짠 조건문을 검사하는 법
조건문은 경계값을 넣어 보면 대부분의 문제가 드러난다. 경계값은 기준이 되는 숫자와 그 바로 앞뒤 값이다.
- 기준이 90과 70이라면
90, 89, 70, 69를 넣어 본다. - 각 값에서 기대하는 결과를 먼저 적고, 실제 결과와 비교한다.
>=인지>인지가 경계에서 결과를 바꾼다. 90점이 A여야 하면>= 90이 맞다.
AI에게 요청할 때는 이렇게 말해 볼 수 있다.
- "이 조건문에 경계값 테스트를 추가해 줘. 90, 89, 70, 69를 넣었을 때 결과를 출력하게."
- "조건이 위에서부터 검사되니까, 좁은 조건이 먼저 오도록 순서를 확인해 줘."
스스로 확인하기
- 함정 코드에서
score = 95일 때grade는? → B. 첫 조건이 참이라 멈춘다.elif는 앞의if가 거짓일 때만 검사한다. if x = 3:이 오류인 이유는? →=는 대입이고 비교는==이기 때문이다.
직접 해 보기
나이를 변수에 넣고 "어린이 / 청소년 / 성인"을 출력해 보자. 기준을 13세 미만은 어린이, 19세 미만은 청소년으로 잡았다면 12, 13, 18, 19를 넣어 모두 의도대로 나오는지 확인한다. 막히면 경계에서 >=와 > 중 무엇이 맞는지 표로 적어 본다.
age = 13
if age < 13:
print("어린이")
elif age < 19:
print("청소년")
else:
print("성인")
청소년
이전 편과 다음 편
- 이전 글: 2편: 변수와 =의 진짜 뜻
- 다음 글: 4편: 반복문에서는 같은 일을 여러 번 시키는
for·while과, 한 칸 차이로 생기는range실수를 다룬다.
시리즈 전체 목록은 10편 끝에 모아 두었다.