06. 반복문
for와 while로 반복을 다루고 break로 중단한다
목차
- 학습 목표
- 1. for문
- 기본 구조
- range() 함수
- 실습 6-1. 기본 반복 출력
- 실습 6-2. range() 다양한 패턴
- 실습 6-3. 합계 구하기 (누적 패턴)
- 실습 6-4. 문자열 세로 출력
- 2. 중첩 for문
- 개념
- 대표 예제 : 구구단
- 실습 6-5. 2단 구구단
- 실습 6-6. 전체 구구단 (2단~9단)
- 3. while문
- 기본 구조
- for vs while
- 실습 6-7. while문으로 합계 구하기
- 4. break — 반복 중단
- 개념
- 실습 6-8. break문
- 5. 반복문 + 조건문 조합
- 패턴
- 실습 6-9. 3의 배수 합계 (1~100)
- 실습 6-10. 섭씨 → 화씨 변환표
- 실습 6-11. 배수의 합계 (while문 + 조건문)
- 연습 문제
스포츠 데이터로 배우는 파이썬 기초
학습 목표
for문으로 정해진 횟수만큼 반복range()함수의 다양한 패턴 숙지while문으로 조건 기반 반복break로 반복 중단- 반복문 + 조건문 조합 활용
1. for문
기본 구조
for 변수 in range(횟수):
반복할 코드
range() 함수
| 형태 | 범위 | 예시 |
|---|---|---|
range(n) | 0 ~ n-1 | range(5) → 0,1,2,3,4 |
range(a, b) | a ~ b-1 | range(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
| 구분 | for | while |
|---|---|---|
| 반복 기준 | 정해진 횟수/범위 | 조건이 참인 동안 |
| 종료 | 범위 끝나면 자동 | 조건이 거짓이 되면 |
| 주의 | — | 조건 변경 코드 필수 |
실습 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 — 조건 변수를 변경해야 루프 탈출 가능