콘텐츠로 이동

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

짝수일 때 continueprint(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 두 변수 동시 업데이트