조건문 연습
수업 목표
- 조건문(if, elif, else)의 개념과 동작 원리를 설명할 수 있다.
- 파이썬의 들여쓰기(Indentation) 규칙과 콜론(:) 문법을 코딩 시 정확하게 준수할 수 있다.
- 논리 연산자(and, or, not)를 활용하여 여러 조건이 결합된 제어식을 구현할 수 있다.
- 삼항 연산자(한 줄 조건식)의 기본 구조를 이해하고 상황에 맞춰 응용할 수 있다.
생각해보기: 상황에 맞게 다른 동작을 하는 기계
우리는 일상생활에서 매 순간 결정을 내립니다. "오늘 비가 오면 우산을 챙기고, 비가 오지 않으면 우산을 두고 간다." 혹은 "신호등이 초록불이면 건너고, 빨간불이면 멈춘다." 컴퓨터 프로그램도 이와 똑같이 행동해야 할 때가 아주 많습니다.
자판기에 돈을 넣었을 때 돈이 충분하면 음료수가 나오고, 부족하면 잔액이 부족하다는 메시지를 띄우는 것처럼, 사용자의 입력이나 상황(데이터)에 따라 프로그램이 서로 다른 명령을 실행하도록 흐름을 나누는 기법을 조건문(Conditional Statement)이라고 합니다. 파이썬의 가장 기초적이고 중요한 조건 구조를 배워봅시다.
1. if-else — 참과 거짓, 두 갈래 길
가장 기본이 되는 조건 구조입니다. 조건이 참(True)일 때는 if 아래의 코드를 실행하고, 거짓(False)일 때는 else 아래의 코드를 실행합니다.
파이썬의 핵심 문법: 들여쓰기 규칙
파이썬은 다른 프로그래밍 언어와 달리 중괄호({ })를 쓰지 않고 들여쓰기(Indentation)를 기준으로 조건문에 속하는 코드 범위를 정합니다. 일반적으로 공백 4칸을 기준으로 하며, 들여쓰기 깊이가 다르면 프로그램이 작동하지 않고 에러가 발생합니다.
# 점수를 입력받아 합격 여부를 판별하는 프로그램
player_score = int(input())
# 조건식의 끝에는 반드시 콜론(:)을 작성합니다.
if player_score >= 60:
print("축하합니다!") # score가 60 이상인 참(True)일 때 실행되는 블록
print("합격입니다.") # 같은 간격으로 들여쓰기하여 하나의 그룹으로 만듭니다.
else:
print("아쉽습니다.") # score가 60 미만인 거짓(False)일 때 실행되는 블록
print("불합격입니다.")
print("프로그램 종료") # 들여쓰기 밖: 조건문 실행과 관계없이 항상 실행됨
2. if-elif-else — 세 개 이상의 갈림길
판단해야 할 선택지가 3개 이상일 때는 elif(Else If의 줄임말)를 사용합니다. 파이썬은 위에서부터 차례대로 조건식을 검사하며, 최초로 참(True)이 되는 하나의 코드 블록만 실행하고 전체 조건문을 탈출합니다.
# 점수에 따라 등급을 부여하는 프로그램
player_score = int(input())
if player_score >= 90:
print("A등급") # 90점 이상일 때 실행
elif player_score >= 80:
print("B등급") # 90점 미만이면서 80점 이상일 때 실행
elif player_score >= 70:
print("C등급") # 80점 미만이면서 70점 이상일 때 실행
else:
print("F등급") # 위의 모든 조건이 만족하지 않을(70점 미만) 때 실행
초보자가 가장 많이 하는 실수: elif와 연속 if의 차이
조건을 나열할 때 elif를 사용하는 것과 독립적인 if를 여러 번 이어서 쓰는 것은 완전히 다른 결과를 낳습니다.
# [elif를 사용한 경우 (올바른 설계)]
score = 95
if score >= 90:
print("A") # A 출력 후 조건문 종료
elif score >= 80:
print("B")
# [if를 연속으로 사용한 경우 (잘못된 설계)]
score = 95
if score >= 90:
print("A") # A 출력 (참이므로 실행됨)
if score >= 80:
print("B") # B 출력 (이 조건식도 참이므로 독립적으로 실행됨!)
3. 논리 연산자 — 여러 조건을 한 문장으로 엮기
두 개 이상의 조건을 조합해 판단하거나 참/거짓 판단의 의미를 부정(반전)하고 싶을 때는 논리 연산자 and, or, not을 활용합니다.
| 연산자 | 의미 | 작동 규칙 |
|---|---|---|
and |
그리고 (그리고) | 양쪽 조건이 모두 True일 때만 결과가 True가 됨 |
or |
또는 (혹은) | 양쪽 중 하나라도 True이면 결과가 True가 됨 |
not |
~이 아님 (부정) | True는 False로, False는 True로 결과를 반전시킴 |
# 놀이기구 탑승 여부 판별 프로그램
age = 15
height = 160
# and 연산: 두 조건이 모두 True일 때 작동
if age >= 13 and height >= 150:
print("롤러코스터 탑승 가능")
# or 연산: 둘 중 하나라도 True이면 작동
if age < 8 or age >= 65:
print("입장료 할인 대상")
# not 연산: True/False 결과를 반대로 뒤집음
is_premium_user = False
if not is_premium_user:
print("일반 유저 광고가 송출됩니다.")
4. 한 줄 조건식 (삼항 연산자) — 코드 줄이기
아주 단순한 if-else 구문은 단 한 줄로 축약해 표현할 수 있습니다. 온라인 저지(OJ) 채점 결과를 화면에 인쇄할 때 특히 유용하게 쓰입니다.
# [기존 조건문]
player_hp = 50
if player_hp > 0:
status = "생존"
else:
status = "사망"
# [한 줄 조건식] -> 값A if 조건식 else 값B
status = "생존" if player_hp > 0 else "사망"
print(status) # 출력 결과: 생존
# 출력 함수 내부에서 즉각 판단하기
number = 15
print("YES" if number % 3 == 0 else "NO") # 출력 결과: YES
자주 하는 실수 & 오류 예방
1. 들여쓰기 오류 (Indentationerror)
들여쓰기 간격이 맞지 않거나 섞였을 때 발생하는 구문 오류입니다.
if True:
print("가나다")
print("라마바") # 에러 발생: IndentationError: unexpected indent
오류 해결: 스페이스바 4칸 혹은 탭(Tab) 키 중 하나로 코딩 룰을 일관되게 정하여 들여쓰기 레벨을 통일해야 합니다.
2. 조건식 끝의 콜론(:) 누락
파이썬은 제어문(if, elif, else, for, while 등)의 조건식 끝에 :를 찍어서 다음 줄부터 실행 블록이 시작됨을 나타냅니다. 이를 빼먹으면 문법 오류가 납니다.
# if score >= 60 # 에러 발생: SyntaxError: expected ':'
# print("합격")
3. 대입(=)과 비교(==)의 혼동
변수에 값을 할당할 때 쓰는 = 기호와 두 값이 같은지 판정할 때 쓰는 == 기호를 혼동하여 조건문 안에 =를 쓰면 에러가 납니다.
hp = 10
# if hp = 0: # 에러 발생: SyntaxError: invalid syntax
# print("게임 오버")
# 올바른 작성:
if hp == 0:
print("게임 오버")
핵심 정리
| 체크 항목 | 작성 수칙 및 가이드라인 |
|---|---|
콜론 (:) |
조건부 분기의 끝에 빠뜨리지 않았는지 점검 |
| 들여쓰기 (공백 4칸) | 조건문 내부 코드가 가지런히 줄을 맞춰 배치되어 있는지 확인 |
비교 등호 (==) |
동등 비교 판단 시 대입 기호(=)를 쓰지 않았는지 체크 |
다중 분기 (elif) |
여러 조건 중 하나만 거쳐서 탈출하게끔 설계를 의도했는지 점검 |
이번 주 대회 바로가기
1반 | 2반 | 3반 | 4반 | 5반 | 6반 | 7반 | 8반 | 9반
※ 대회 링크는 선생님이 별도 공지합니다.