바이브코더를 위한 파이썬 기초

바이브코더를 위한 파이썬 기초 3편: 조건문 if·elif·else와 순서 버그

파이썬 조건문 if·elif·else는 처음 참인 갈래 하나만 실행한다. 조건 순서 때문에 95점이 B가 되는 버그, =와 ==의 차이, 경계값으로 AI 조건문을 검사하는 법을 정리했다.

바이브코더를 위한 파이썬 기초 3편: 조건문 if·elif·else와 순서 버그

"점수가 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를 넣었을 때 결과를 출력하게."
  • "조건이 위에서부터 검사되니까, 좁은 조건이 먼저 오도록 순서를 확인해 줘."

스스로 확인하기

  1. 함정 코드에서 score = 95일 때 grade는? → B. 첫 조건이 참이라 멈춘다. elif는 앞의 if가 거짓일 때만 검사한다.
  2. if x = 3:이 오류인 이유는? → =는 대입이고 비교는 ==이기 때문이다.

직접 해 보기

나이를 변수에 넣고 "어린이 / 청소년 / 성인"을 출력해 보자. 기준을 13세 미만은 어린이, 19세 미만은 청소년으로 잡았다면 12, 13, 18, 19를 넣어 모두 의도대로 나오는지 확인한다. 막히면 경계에서 >=와 > 중 무엇이 맞는지 표로 적어 본다.

age = 13
if age < 13:
    print("어린이")
elif age < 19:
    print("청소년")
else:
    print("성인")
청소년

이전 편과 다음 편

시리즈 전체 목록은 10편 끝에 모아 두었다.

목록으로