조건문(if)
프로그램이 상황에 따라 다르게 동작하도록 갈림길을 만들어주는 조건문.
로직이라는 것을 만들 수 있는 첫 걸음을 떼어봅시다.
요즘은 고등학교에서도 코딩을 정규 과목으로 가르치는 시대입니다. 전공자가 아니어도 바이브 코딩(Vibe Coding)이나 생성형 AI(Generative AI)를 활용하면 누구나 그럴듯한 코드 결과물을 만들어낼 수 있게 되었죠.
개발 언어를 접하는, 전공자가 아닌 일반인 입문자가 많아진 것입니다.
이 시리즈는 글쓴이가 실제로 일반인, 고등학생 등 비전공자·입문자에게 파이썬을 가르치면서 정리한 내용들을 교재 형식으로 엮은 글입니다.최대한 쉽고 친절하게 설명하면서도, 컴퓨터와 프로그래밍 언어에 대한 기초 이론까지 함께 짚고 넘어가려 합니다.
고등학생, 비전공자, 완전 입문자도 따라올 수 있게끔 만든 시리즈이고, 실제 과외 수업 자료를 바탕으로 만들어서 학교 시험처럼 개념 확인 문제도 그대로 들어있어요.
중간중간 빈칸 채우기랑 학교 시험 유형 문제가 나오는데, 정답은 바로 안 보이게 접어뒀습니다. 먼저 스스로 생각해본 다음 "보기"를 눌러서 확인해보세요.
지금까지 작성한 코드들은 위에서 아래로 순서대로 한 줄씩 실행됐어요. 하지만 실제 프로그램은 상황에 따라 다르게 동작해야 할 때가 많습니다. 예를 들어 "점수가 80점 이상이면 합격, 아니면 불합격"처럼요.
이렇게 조건이 참(True)일 때만 특정 코드를 실행하도록 만드는 것이 바로 if 조건문입니다.
실행할 코드
조건 뒤에는 반드시 :(콜론)을 붙입니다. 그리고 조건이 참일 때 실행할 코드는 들여쓰기(스페이스 4칸 또는 탭 1번)로 구분해요. 다른 언어에서는 중괄호 { }로 실행 범위를 묶지만, 파이썬은 들여쓰기 자체가 "여기부터 여기까지가 if 안쪽 코드"라는 뜻이 됩니다.
if score >= 80:
print("합격입니다.")
if score >= 80:
print("합격입니다.")
score가 50이면 score >= 80이 거짓(False)이 되기 때문에, if 안쪽 코드는 아예 실행되지 않고 그냥 건너뜁니다. 이처럼 else 없이 if만 쓰면 "조건이 맞을 때만 뭔가 하고, 아니면 그냥 넘어가는" 구조가 돼요.
- 콜론(:) 빠뜨리기 —
if score >= 80처럼 콜론을 빼먹으면 오류가 납니다. - 들여쓰기 안 하기 — if 아래 코드를 들여쓰지 않으면 "여기가 if 안쪽"이라는 걸 파이썬이 알 수 없어요.
- = 와 == 헷갈리기 —
=은 값을 저장하는 대입 연산자,==은 같은지 비교하는 연산자입니다. 조건문 안에서는 반드시==을 써야 해요.
- ① if 조건문에서 조건 뒤에는 반드시 을 붙여야 한다.
- ② if 안쪽에서 실행할 코드는 로 구분한다.
정답
- 다음 코드의 실행 결과를 작성하시오.
money = 5000
if money >= 3000:
print("구매 가능") - 다음 코드를 실행하면 "프로그램 종료"는 age 값에 관계없이 항상 출력되는지, 조건에 따라 다른지 서술하시오.
age = 20
if age >= 20:
print("성인입니다")
print("프로그램 종료")
정답
2.
print("프로그램 종료")는 if 블록 안에 들여쓰기 되어 있지 않으므로, age 조건이 참이든 거짓이든 상관없이 항상 실행됩니다. if 조건문의 영향을 받는 코드는 오직 들여쓰기 된 부분뿐입니다.방금 배운 if는 조건이 거짓이면 그냥 아무것도 안 하고 넘어갔어요. 하지만 "조건이 참이면 이걸, 거짓이면 저걸" 실행하고 싶을 때가 더 많습니다. 이럴 때 else를 사용합니다.
조건이 참일 때 실행할 코드
else:
조건이 거짓일 때 실행할 코드
if score >= 80:
print("합격")
else:
print("불합격")
if num % 2 == 0:
print("짝수입니다.")
else:
print("홀수입니다.")
%는 나머지를 구하는 연산자예요. 어떤 수를 2로 나눴을 때 나머지가 0이면 짝수, 1이면 홀수입니다. 그래서 num % 2 == 0이라는 조건 하나로 짝수/홀수를 판별할 수 있어요.
- else에 조건을 쓰는 것 —
else score < 80:처럼 else 뒤에 조건을 쓰면 오류가 납니다. else는 "그 외 나머지 모든 경우"를 뜻하기 때문에 조건을 붙이지 않아요. - else를 단독으로 사용 — else는 반드시 if와 짝을 이루어야 하며, else 혼자서는 쓸 수 없습니다.
- if와 else의 들여쓰기 깊이가 다른 경우 — 두 블록은 같은 들여쓰기 깊이를 유지해야 합니다.
주의할 점 — if와 else는 항상 둘 중 하나만 실행됩니다. 조건이 참이면 if 블록만, 거짓이면 else 블록만 실행되고, 두 블록이 동시에 실행되는 일은 절대 없어요.
- ① if 조건이 거짓일 때 실행되는 블록은 이다.
- ② if와 else 중에서 실제로 실행되는 블록의 개수는 개다.
정답
- 다음 코드의 실행 결과를 작성하시오.
age = 15
if age >= 15:
print("관람 가능합니다.")
else:
print("관람 불가능합니다.") - if-else 구조에서 else 뒤에 조건을 쓸 수 없는 이유를 서술하시오.
정답
2. else는 "if 조건이 아닌 나머지 모든 경우"를 뜻하기 때문입니다. 이미 if에서 조건을 검사했으므로, else는 별도의 조건 없이 "그 외의 경우 전부"를 담당합니다.
if-else는 갈림길이 딱 두 개(참/거짓)일 때만 쓸 수 있어요.
하지만 "90점 이상은 A, 80점 이상은 B, 70점 이상은 C, 나머지는 F"처럼 갈림길이 세 개 이상일 때는
elif(else if의 줄임말)를 사용합니다.
조건1이 참일 때
elif 조건2:
조건2가 참일 때
elif 조건3:
조건3이 참일 때
else:
모든 조건이 거짓일 때
조건은 위에서부터 순서대로 검사됩니다. 하나라도 참인 조건을 만나면 그 블록만 실행하고 나머지는 전부 건너뛰어요.
if score >= 90:
print("A")
elif score >= 80:
print("B")
else:
print("C")
score가 95일 때는 첫 번째 조건 score >= 90이 참이 되는 순간
"A"만 출력하고 나머지 elif, else는 아예 검사조차 하지 않습니다. 이게 elif 체인의 핵심 동작 방식이에요.
조건 순서를 반대로 쓰면 완전히 다른 결과가 나옵니다. 아래 코드는 score가 95인데도 "D"가 출력되는 잘못된 예시예요.
if score >= 60:
print("D")
elif score >= 70:
print("C")
elif score >= 80:
print("B")
elif score >= 90:
print("A")
score(95)는 이미 첫 번째 조건인 score >= 60부터 참이기 때문에 그 자리에서 "D"를 출력하고 끝나버립니다.
그래서 elif 체인은 항상 큰 조건(또는 더 엄격한 조건)부터 순서대로 써야 해요.
elif가 아니라 if를 여러 번 따로 쓰면, 조건마다 전부 각각 검사되기 때문에 여러 블록이 동시에 실행될 수 있습니다.
if score >= 90:
print("A")
if score >= 80:
print("B")
else:
print("C")
B
두 번째 if는 첫 번째 if와 완전히 별개의 독립된 조건문이라서, score(95)가 90 이상이라는 것과 별개로 80 이상이라는 조건도 따로 검사해 참이 되면 또 실행됩니다. 결국 "A"와 "B"가 둘 다 출력되는 의도치 않은 결과가 나와요. 여러 갈래 중 하나만 실행되길 원한다면 반드시 elif로 이어 써야 합니다.
- ① if도 아니고 else도 아닌, 추가 조건을 검사할 때 사용하는 키워드는 이다.
- ② if-elif 체인의 맨 마지막에서 앞의 모든 조건이 거짓일 때를 담당하는 것은 이다.
정답
- 다음 코드의 실행 결과를 작성하시오.
score = 72
if score >= 90: print("A")
elif score >= 80: print("B")
elif score >= 70: print("C")
else: print("F") - if만 여러 개 따로 쓰는 것과 elif로 이어 쓰는 것의 차이를 서술하시오.
정답
2. if를 여러 개 따로 쓰면 각 조건이 서로 독립적으로 전부 검사되어, 조건에 따라 여러 블록이 동시에 실행될 수 있습니다. 반면 elif로 이어 쓰면 위에서부터 순서대로 검사하다가 참인 조건 하나만 실행하고 나머지는 검사조차 하지 않습니다.
'Language > Python' 카테고리의 다른 글
| [고등학생부터, 파이썬] 06. 논리연산자와 중첩 if (0) | 2026.08.05 |
|---|---|
| [고등학생부터, 파이썬] 04. 산술연산자와 비교연산자 (0) | 2026.08.04 |
| [고등학생부터, 파이썬] 03. input() 함수와 형변환(Type Casting) (0) | 2026.08.04 |
| [고등학생부터, 파이썬] 02. 자료형 (Data Type) (0) | 2026.08.04 |
| [고등학생부터, 파이썬] 01. 프로그래밍이란? + print()와 변수 (0) | 2026.08.04 |
댓글