코드가 항상 위에서 아래로만 실행된다면?
같은 작업을 1000번 반복하거나, 상황에 따라 다른 처리를 해야 할 때 — 조건문과 반복문이 필요합니다.
flowchart LR
subgraph CONTROL["흐름 제어"]
C["조건문 (if)\n상황에 따라 분기"]
L["반복문 (for/while)\n같은 코드 반복"]
end
if 조건문
score = 85
if score >= 90:
print("A 학점")
elif score >= 80:
print("B 학점") # 실행됨
elif score >= 70:
print("C 학점")
else:
print("F 학점")
파이썬은 중괄호 대신 들여쓰기(4칸)로 블록을 구분합니다.
# ❌ 들여쓰기 오류
if True:
print("실행") # IndentationError!
# ✅ 올바른 들여쓰기
if True:
print("실행")
비교 연산자
a, b = 10, 20
print(a == b) # False 같다
print(a != b) # True 다르다
print(a < b) # True 작다
print(a <= b) # True 작거나 같다
print(a > b) # False 크다
print(a >= b) # False 크거나 같다
논리 연산자
age = 20
has_id = True
# and: 모두 참이어야
if age >= 18 and has_id:
print("입장 가능")
# or: 하나만 참이면
is_weekend = True
is_holiday = False
if is_weekend or is_holiday:
print("쉬는 날")
# not: 반전
is_raining = False
if not is_raining:
print("산책 가기 좋은 날")
한 줄 조건문 (삼항 연산자)
score = 75
grade = "합격" if score >= 60 else "불합격"
print(grade) # 합격
for 반복문
# 리스트 순회
fruits = ["사과", "바나나", "체리"]
for fruit in fruits:
print(fruit)
# range로 숫자 반복
for i in range(5): # 0, 1, 2, 3, 4
print(i)
for i in range(1, 6): # 1, 2, 3, 4, 5
print(i)
for i in range(0, 10, 2): # 0, 2, 4, 6, 8 (2씩 증가)
print(i)
enumerate: 인덱스와 값 동시에
fruits = ["사과", "바나나", "체리"]
for index, fruit in enumerate(fruits):
print(f"{index + 1}번: {fruit}")
# 출력:
# 1번: 사과
# 2번: 바나나
# 3번: 체리
while 반복문
조건이 True인 동안 반복합니다.
count = 0
while count < 5:
print(f"카운트: {count}")
count += 1 # count = count + 1
# 사용자 입력 받기
while True:
answer = input("계속하시겠습니까? (y/n): ")
if answer == "n":
print("종료합니다.")
break # 반복문 강제 종료
elif answer == "y":
print("계속합니다.")
else:
print("y 또는 n을 입력하세요.")
break와 continue
# break: 반복문 즉시 종료
for i in range(10):
if i == 5:
break
print(i) # 0, 1, 2, 3, 4
# continue: 현재 반복 건너뛰기
for i in range(10):
if i % 2 == 0: # 짝수 건너뛰기
continue
print(i) # 1, 3, 5, 7, 9
중첩 반복문
# 구구단 2단 ~ 4단
for dan in range(2, 5):
print(f"\n{dan}단:")
for num in range(1, 10):
print(f" {dan} × {num} = {dan * num}")
실전 예시: 점수 처리
scores = [85, 92, 67, 78, 95, 55, 88]
total = 0
pass_count = 0
for score in scores:
total += score
if score >= 60:
pass_count += 1
average = total / len(scores)
print(f"평균 점수: {average:.1f}점")
print(f"합격자 수: {pass_count}명")
print(f"불합격자 수: {len(scores) - pass_count}명")
실전 예시: 숫자 맞추기 게임
import random
secret = random.randint(1, 100)
attempts = 0
while True:
guess = int(input("숫자를 맞춰보세요 (1~100): "))
attempts += 1
if guess < secret:
print("더 큰 숫자입니다!")
elif guess > secret:
print("더 작은 숫자입니다!")
else:
print(f"정답! {attempts}번 만에 맞추셨습니다.")
break
정리
| 구문 | 용도 |
|---|---|
if / elif / else | 조건에 따라 분기 |
for item in list | 리스트 요소 순회 |
for i in range(n) | n번 반복 |
while 조건 | 조건이 True인 동안 반복 |
break | 반복문 즉시 종료 |
continue | 현재 반복 건너뛰기 |
enumerate | 인덱스 + 값 동시 순회 |
다음 편에서는 함수와 모듈 — 코드를 재사용 가능한 단위로 묶는 방법을 배웁니다.