04 — LECTURE ·PY-06 ·2026.02.06

06. 반복문

for와 while로 반복을 다루고 break로 중단한다

목차
  1. 학습 목표
  2. 1. for문
  3. 기본 구조
  4. range() 함수
  5. 실습 6-1. 기본 반복 출력
  6. 실습 6-2. range() 다양한 패턴
  7. 실습 6-3. 합계 구하기 (누적 패턴)
  8. 실습 6-4. 문자열 세로 출력
  9. 2. 중첩 for문
  10. 개념
  11. 대표 예제 : 구구단
  12. 실습 6-5. 2단 구구단
  13. 실습 6-6. 전체 구구단 (2단~9단)
  14. 3. while문
  15. 기본 구조
  16. for vs while
  17. 실습 6-7. while문으로 합계 구하기
  18. 4. break — 반복 중단
  19. 개념
  20. 실습 6-8. break문
  21. 5. 반복문 + 조건문 조합
  22. 패턴
  23. 실습 6-9. 3의 배수 합계 (1~100)
  24. 실습 6-10. 섭씨 → 화씨 변환표
  25. 실습 6-11. 배수의 합계 (while문 + 조건문)
  26. 연습 문제

스포츠 데이터로 배우는 파이썬 기초

학습 목표

  • for 문으로 정해진 횟수만큼 반복
  • range() 함수의 다양한 패턴 숙지
  • while 문으로 조건 기반 반복
  • break 로 반복 중단
  • 반복문 + 조건문 조합 활용

1. for문

기본 구조

for 변수 in range(횟수):
    반복할 코드

range() 함수

형태범위예시
range(n)0 ~ n-1range(5) → 0,1,2,3,4
range(a, b)a ~ b-1range(1, 11) → 1~10
range(a, b, step)a ~ b-1, step 간격range(1, 10, 2) → 1,3,5,7,9
역순b ~ a+1, step 음수range(10, 0, -1) → 10~1

실습 6-1. 기본 반복 출력

# 5번 반복 출력
for x in range(5):
    print('안녕하세요.')
안녕하세요.
안녕하세요.
안녕하세요.
안녕하세요.
안녕하세요.

실습 6-2. range() 다양한 패턴

# range(10) : 0~9
for i in range(10):
    print(i, end=' ')
print()

# range(1, 11) : 1~10
for i in range(1, 11):
    print(i, end=' ')
print()

# range(1, 10, 2) : 홀수만
for i in range(1, 10, 2):
    print(i, end=' ')
print()

# range(20, 0, -2) : 역순, 짝수만
for i in range(20, 0, -2):
    print(i, end=' ')
0 1 2 3 4 5 6 7 8 9 
1 2 3 4 5 6 7 8 9 10 
1 3 5 7 9 
20 18 16 14 12 10 8 6 4 2 

실습 6-3. 합계 구하기 (누적 패턴)

  • 변수에 += i 로 값을 누적
  • 스포츠 점수 합산에 자주 사용
# 1~10의 합계
total = 0
for i in range(1, 11):
    total += i
    print('i의 값: %d, 합계: %d' % (i, total))
i의 값: 1, 합계: 1
i의 값: 2, 합계: 3
i의 값: 3, 합계: 6
i의 값: 4, 합계: 10
i의 값: 5, 합계: 15
i의 값: 6, 합계: 21
i의 값: 7, 합계: 28
i의 값: 8, 합계: 36
i의 값: 9, 합계: 45
i의 값: 10, 합계: 55

실습 6-4. 문자열 세로 출력

  • for 변수 in 문자열: → 한 글자씩 순회
word = 'SPORTS'
for x in word:
    print(x)
S
P
O
R
T
S

2. 중첩 for문

개념

  • for 안에 for → 이중 반복
  • 바깥 루프 1회 × 안쪽 루프 전체 = 반복 횟수 곱

대표 예제 : 구구단

실습 6-5. 2단 구구단

a = 2
for b in range(1, 10):
    c = a * b
    print('%d x %d = %d' % (a, b, c))
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18

실습 6-6. 전체 구구단 (2단~9단)

for a in range(2, 10):
    print('-' * 20)
    for b in range(1, 10):
        print('%d x %d = %2d' % (a, b, a * b))
print('-' * 20)
--------------------
2 x 1 =  2
2 x 2 =  4
2 x 3 =  6
2 x 4 =  8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
--------------------
3 x 1 =  3
3 x 2 =  6
3 x 3 =  9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
--------------------
4 x 1 =  4
4 x 2 =  8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36
--------------------
5 x 1 =  5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
--------------------
6 x 1 =  6
6 x 2 = 12
6 x 3 = 18
6 x 4 = 24
6 x 5 = 30
6 x 6 = 36
6 x 7 = 42
6 x 8 = 48
6 x 9 = 54
--------------------
7 x 1 =  7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
--------------------
8 x 1 =  8
8 x 2 = 16
8 x 3 = 24
8 x 4 = 32
8 x 5 = 40
8 x 6 = 48
8 x 7 = 56
8 x 8 = 64
8 x 9 = 72
--------------------
9 x 1 =  9
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81
--------------------

3. while문

기본 구조

while 조건식:
    반복할 코드
    조건을 변경하는 코드   # 없으면 무한 루프!

for vs while

구분forwhile
반복 기준정해진 횟수/범위조건이 참인 동안
종료범위 끝나면 자동조건이 거짓이 되면
주의조건 변경 코드 필수

실습 6-7. while문으로 합계 구하기

total = 0
i = 1
while i <= 10:
    total += i
    print('i의 값: %d => 합계: %d' % (i, total))
    i += 1    # 이 줄이 없으면 무한 루프!
i의 값: 1 => 합계: 1
i의 값: 2 => 합계: 3
i의 값: 3 => 합계: 6
i의 값: 4 => 합계: 10
i의 값: 5 => 합계: 15
i의 값: 6 => 합계: 21
i의 값: 7 => 합계: 28
i의 값: 8 => 합계: 36
i의 값: 9 => 합계: 45
i의 값: 10 => 합계: 55

4. break — 반복 중단

개념

  • break : 반복문을 즉시 탈출
  • 특정 조건에서 더 이상 반복할 필요 없을 때 사용

실습 6-8. break문

# 1부터 출력하되 10에서 멈추기
for i in range(1, 1001):
    print(i)
    if i == 10:
        break
1
2
3
4
5
6
7
8
9
10

5. 반복문 + 조건문 조합

패턴

  • 반복문으로 범위를 순회하면서
  • 조건문으로 특정 값만 선별·처리

실습 6-9. 3의 배수 합계 (1~100)

total = 0
for i in range(1, 101):
    if i % 3 == 0:
        print('%d' % i, end=' ')
        total += i

print()
print('-' * 50)
print('1~100에서 3의 배수의 합계:', total)
3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 
--------------------------------------------------
1~100에서 3의 배수의 합계: 1683

실습 6-10. 섭씨 → 화씨 변환표

print('-' * 30)
print('    섭씨      화씨')
print('-' * 30)
for c_temp in range(-20, 31, 5):
    f_temp = c_temp * 9.0 / 5.0 + 32.0
    print('%8d  %8.1f' % (c_temp, f_temp))
print('-' * 30)
------------------------------
    섭씨      화씨
------------------------------
     -20      -4.0
     -15       5.0
     -10      14.0
      -5      23.0
       0      32.0
       5      41.0
      10      50.0
      15      59.0
      20      68.0
      25      77.0
      30      86.0
------------------------------

실습 6-11. 배수의 합계 (while문 + 조건문)

n1 = int(input('첫 수를 입력하세요: '))
n2 = int(input('끝 수를 입력하세요: '))
n = int(input('배수를 입력하세요: '))

total = 0
i = n1
while i <= n2:
    if i % n == 0:
        total += i
    i += 1

print('%d~%d까지 %d의 배수의 합계: %d' % (n1, n2, n, total))
2~15까지 3의 배수의 합계: 45

연습 문제

Q1. range(1, 10, 2) 가 생성하는 숫자는?

  • A) 1,2,3,…,10 B) 1,3,5,7,9 C) 2,4,6,8

Q2. while문에서 무한 루프를 방지하려면?

  • A) break만 쓰면 됨 B) 조건을 변경하는 코드 필수
# 연습 문제 정답
print("Q1 정답: B — 1부터 9까지 2씩 증가")
print("Q2 정답: B — 조건 변수를 변경해야 루프 탈출 가능")
Q1 정답: B — 1부터 9까지 2씩 증가
Q2 정답: B — 조건 변수를 변경해야 루프 탈출 가능