3장: while 반복문 — 조건이 맞는 동안 계속¶
반복문이 왜 필요한가?¶
같은 코드를 여러 번 실행해야 할 때 반복문을 씁니다.
# 반복문 없이 1~5 출력
print(1)
print(2)
print(3)
print(4)
print(5)
100번이라면? 반복문을 쓰면 됩니다.
while 기본 구조¶
while 조건:
실행할 코드
조건이 True이면 블록을 실행하고, 다시 조건을 확인합니다. 조건이 False가 되면 루프를 빠져나갑니다.
조건 확인
↓ True
코드 실행
↓
조건 확인 ← 다시 돌아옴
↓ False
루프 종료
예제로 이해하기¶
예제 1: 카운터¶
i = 0
while i < 5:
i += 1
print(i)
5
루프 안에서 i가 계속 1씩 증가합니다. i < 5가 False가 되는 순간(i = 5) 루프가 끝납니다.
예제 2: 루프 안에서 출력¶
i = 0
while i < 5:
print(i)
i += 1
print(i)
0
1
2
3
4
5
print(i)가 i += 1보다 앞에 있으므로 0부터 출력됩니다.
예제 3: 누적 합계¶
i = 0
sum = 0
while i < 5:
print(i * '#') # i개의 '#' 출력
sum += i
i += 1
print(sum)
(빈 줄)
#
##
###
####
10
0+1+2+3+4 = 10
break — 즉시 탈출¶
조건을 기다리지 않고 루프를 바로 종료합니다.
i = 0
while i < 10:
if i == 5:
break
print(i)
i += 1
0
1
2
3
4
i가 5가 되는 순간 break로 루프 전체를 빠져나갑니다.
continue — 이번 회 건너뛰기¶
현재 반복의 나머지 코드를 건너뛰고 조건 확인으로 돌아갑니다.
i = 0
while i < 10:
i += 1
if i % 2 == 0:
continue
print(i)
1
3
5
7
9
짝수일 때 continue로 print(i)를 건너뜁니다.
while True — 무한 루프¶
조건 자리에 True를 쓰면 영원히 반복됩니다. break로 탈출합니다.
while True:
cmd = input("명령어 입력 (q=종료): ")
if cmd == "q":
break
print("입력:", cmd)
명령어 입력 (q=종료): hello
입력: hello
명령어 입력 (q=종료): q
"종료 조건을 모를 때"나 "사용자 입력을 계속 받을 때" 유용합니다.
피보나치 수열¶
x, y = 0, 1
while x < 100:
print(x, end=" ")
x, y = y, x + y
0 1 1 2 3 5 8 13 21 34 55 89
x, y = y, x + y는 동시에 두 변수를 업데이트합니다.
| 단계 | x | y |
|---|---|---|
| 시작 | 0 | 1 |
| 1회 | 1 | 1 |
| 2회 | 1 | 2 |
| 3회 | 2 | 3 |
| 4회 | 3 | 5 |
| 5회 | 5 | 8 |
실습 미션¶
미션 1: 구구단 출력기¶
원하는 단수를 입력받아 구구단을 출력하세요.
dan = int(input("단수: "))
i = 1
# while 반복문 사용
# 단수: 3
# 3 × 1 = 3
# 3 × 2 = 6
# ...
# 3 × 9 = 27
미션 2: 숫자 맞추기 게임¶
컴퓨터가 1~100 사이의 랜덤 숫자를 정하고, 사용자가 맞출 때까지 힌트를 줍니다.
import random
secret = random.randint(1, 100)
# while 반복문 사용
# 힌트: "더 큰 숫자", "더 작은 숫자", "정답!"
# 숫자를 맞춰보세요: 50
# 더 큰 숫자입니다
# 숫자를 맞춰보세요: 75
# 더 작은 숫자입니다
# 숫자를 맞춰보세요: 63
# 정답! 3번 만에 맞췄습니다
미션 3: 소수 판별기¶
숫자를 입력받아 소수인지 판별하세요. (while 반복문 사용)
소수: 2, 3, 5, 7, 11, 13, ...
2부터 n-1까지 나누어 떨어지면 소수가 아님
n = int(input("숫자: "))
# 여기에 코드 작성
# 숫자: 17
# 17은 소수입니다
# 숫자: 15
# 15는 소수가 아닙니다
미션 4: 누적 합계¶
1부터 시작해서 합계가 100을 넘는 순간의 숫자를 출력하세요.
total = 0
n = 0
# while 반복문 사용
# 합계가 100을 넘은 숫자: 14 (1+2+...+13=91, 1+2+...+14=105)
미션 5: 피보나치 응용¶
피보나치 수열에서 1000 이하의 수만 출력하고, 몇 개인지 세세요.
x, y = 0, 1
count = 0
# 여기에 코드 작성
# 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
# 총 17개
핵심 요약¶
| 개념 | 설명 |
|---|---|
while 조건: |
조건이 True인 동안 반복 |
break |
루프 즉시 종료 |
continue |
이번 회 나머지 건너뛰고 조건으로 |
while True: |
무한 루프 (break로 탈출) |
| 카운터 변수 | 루프 안에서 값을 증가시켜 조건 변화 |
x, y = y, x+y |
두 변수 동시 업데이트 |