if로 조건 나누기
파이썬은 if와 elif를 위에서부터 차례로 확인해서, 조건이 처음으로 True인 갈래 하나만 실행하고 나머지는 건너뜁니다.
나이에 따라 달라지는 입장료
새 문법을 배우기 전에 문제부터 풀어 봅시다. 어느 작은 과학관(이 예를 위해 지어낸 곳)은 7세 미만은 무료, 7세부터 18세까지는 3,000원, 나머지는 5,000원을 받습니다. 나이를 주면 입장료를 출력하는 프로그램을 만들려고 합니다. 먼저 매표소 직원이 묻는 순서대로, 질문 목록을 우리말로 적어 보세요.
아마 이런 순서로 적었을 겁니다. 「7세보다 어린가? 그렇다면 무료, 끝. 아니라면 18세 이하인가? 그렇다면 3,000원, 끝. 둘 다 아니면 5,000원.」 이것이 이미 프로그램입니다. 파이썬은 「만약」, 「그렇지 않고 만약」, 「그렇지 않으면」을 if, elif, else로 씁니다. 정보 시간에 배우는 선택 구조입니다.
age = 12
if age < 7:
price = 0
elif age <= 18:
price = 3000
else:
price = 5000
print(price)3000문법에서 지켜야 할 것이 세 가지 있습니다. 조건 줄은 콜론(:)으로 끝납니다. 그 갈래에 속한 줄은 들여쓰기를 하는데, 파이썬 튜토리얼은 빈칸 네 개를 권합니다. 들여쓰기가 끝나면 갈래도 끝나기 때문에 print(price)는 나이와 상관없이 실행됩니다. 그리고 갈래는 하나만 실행됩니다. 나이가 12이면 첫 조건은 False, 둘째 조건이 True라서 price는 3000이 되고 else는 쳐다보지도 않습니다.
비교하면 True나 False가 나옵니다
| 연산자 | 뜻 | 예 | 결과 |
|---|---|---|---|
| == | 같다 | 5 == 5 | True |
| != | 같지 않다 | 5 != 5 | False |
| < | 작다(미만) | 3 < 7 | True |
| <= | 작거나 같다(이하) | 7 <= 7 | True |
| > | 크다(초과) | 3 > 7 | False |
| >= | 크거나 같다(이상) | 18 >= 19 | False |
등호 두 개에 주의하세요. = 하나는 대입이고, == 두 개가 비교입니다. 문자열끼리도 비교할 수 있는데, 대문자와 소문자를 다른 글자로 보기 때문에 "kimchi" == "Kimchi"는 False입니다. 「이상」, 「이하」, 「미만」, 「초과」가 각각 어느 기호인지는 수학 시간의 부등호와 똑같습니다.
elif 줄의 순서가 답을 바꿉니다
파이썬은 처음으로 True가 된 조건에서 멈추기 때문에 갈래의 순서가 중요합니다. 점수로 등급을 매기는 프로그램이 대표적인 예입니다. 90 이상을 먼저, 그다음 80, 그다음 70을 확인해야 합니다. 70 이상을 맨 앞에 두면 95점도 거기서 걸려 C를 받습니다. 95 >= 70도 True이기 때문입니다.
score = 95
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "D"
print(grade)Aand, or, not으로 조건을 묶습니다
and는 양쪽이 모두 True일 때만 True이고, or는 한쪽만 True여도 True이며, not은 True와 False를 뒤집습니다. 「13세 이상 18세 이하」는 age >= 13 and age <= 18로 쓰거나, 파이썬에서만 되는 짧은 꼴 13 <= age <= 18로 씁니다. 갈래 안에 다시 if를 넣을 수도 있는데, 이것을 중첩이라고 합니다. 중학교 정보 [9정03-06]의 「논리 연산과 중첩 제어 구조」가 이 두 가지입니다.
age = 15
has_ticket = True
if 13 <= age <= 18 and has_ticket:
print("Teen entry")
if not has_ticket or age < 7:
print("See the desk")
else:
print("Go in")Teen entry
Go in| if | 조건이 True일 때만 들여 쓴 줄을 실행 |
| elif | 「그렇지 않고 만약」. 위가 모두 False일 때만 확인 |
| else | 위 조건이 하나도 True가 아닐 때 실행 |
| == | 두 값을 비교. =는 대입 |
| and / or / not | 모두 참 / 하나라도 참 / 반대 |
| 들여쓰기 | 어느 줄이 갈래에 속하는지 나타내는 빈칸 네 개 |
- 무엇이 출력될까요?
x = 8 if x > 5: print("big") else: print("small") - 무엇이 출력될까요?
age = 7 if age < 7: print("free") elif age <= 18: print("3000") else: print("5000") - 무엇이 출력될까요?
score = 85 if score >= 70: print("C") elif score >= 80: print("B") - 무엇이 출력될까요?
x = 3 if x > 5: print("A") print("B")A
BBA(nothing)
- 무엇이 출력될까요?
print(5 == 5.0, "a" == "A") - 무엇이 출력될까요?
t = 30 print(t > 25 and t < 28) - 무엇이 출력될까요?
rain = False print(not rain) - 무엇이 출력될까요?
n = 14 if n % 2 == 0: if n > 10: print("big even") else: print("small even") else: print("odd") - x가 10인지 확인하는 올바른 줄은?
- if x = 10:
- if x == 10:
- if x == 10
- if (x = 10)
- "Even"이 출력되도록 줄을 순서대로 놓으세요.출력
Even
- 「if score = 90:으로 score가 90인지 확인한다.」 = 하나는 대입입니다. SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?라는 오류가 납니다. if score == 90:이라고 써야 합니다.
- 「if answer == "yes" or "y":라고 쓰면 두 답을 다 잡는다.」 파이썬은 이것을 (answer == "yes") or ("y")로 읽습니다. 비어 있지 않은 문자열 "y"는 참으로 치기 때문에 조건이 언제나 참이 됩니다. answer == "yes" or answer == "y"라고 써야 합니다.
- 「들여쓰기는 보기 좋으라고 하는 것이다.」 파이썬에서는 들여쓰기가 어느 줄이 갈래에 속하는지를 정합니다. 빠뜨리면 IndentationError: expected an indented block after 'if' statement on line 2 같은 오류로 멈춥니다.
- if / elif / else: 처음 True인 갈래 하나만 실행.
- 조건 줄은 :로 끝나고, 갈래는 네 칸 들여쓰기.
- ==는 비교, =는 대입.
- elif 사슬에서는 가장 까다로운 조건을 먼저.
- and, or, not으로 조건을 묶음.
이 과정의 출처 (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
확인한 날: 2026-10-19