3단원 과제 정답: while 반복문¶
문제 1. 카운터와 누적¶
① 5
② 15
해설
| 반복 | i (증가 전) | i (증가 후) | total |
|---|---|---|---|
| 1 | 0 | 1 | 1 |
| 2 | 1 | 2 | 3 |
| 3 | 2 | 3 | 6 |
| 4 | 3 | 4 | 10 |
| 5 | 4 | 5 | 15 |
i = 5일 때 i < 5가 False가 되어 종료.
total = 1 + 2 + 3 + 4 + 5 = 15
문제 2. break 실행 시점¶
① 1
② 2
③ 3
④ 4
⑤ end: 5
해설
| 반복 | i (증가 후) | i == 5? | 동작 |
|---|---|---|---|
| 1 | 1 | 아니오 | print(1) |
| 2 | 2 | 아니오 | print(2) |
| 3 | 3 | 아니오 | print(3) |
| 4 | 4 | 아니오 | print(4) |
| 5 | 5 | 예 | break → 즉시 종료 |
핵심 함정: break가 실행되면 print(i)는 실행되지 않습니다.
print("end:", i)는 반복문 바깥이므로 항상 실행됩니다.
문제 3. continue 건너뛰기¶
① 1
② 2
③ 4
④ 5
⑤ 7
⑥ 8
⑦ 10
해설
| i | i % 3 | 동작 |
|---|---|---|
| 1 | 1 | print(1) |
| 2 | 2 | print(2) |
| 3 | 0 | continue (건너뜀) |
| 4 | 1 | print(4) |
| 5 | 2 | print(5) |
| 6 | 0 | continue (건너뜀) |
| 7 | 1 | print(7) |
| 8 | 2 | print(8) |
| 9 | 0 | continue (건너뜀) |
| 10 | 1 | print(10) → i < 10이 False → 종료 |
핵심 함정: continue는 print(i)만 건너뛰고, i += 1은 continue 위에 있으므로 무한 루프에 빠지지 않습니다.
i = 10일 때 루프 조건 i < 10이 False가 되어 종료됩니다.
문제 4. 누적 합의 종료 조건¶
① 6
② 21
해설
| 반복 | n | total | total < 20? |
|---|---|---|---|
| 1 | 1 | 1 | 참 |
| 2 | 2 | 3 | 참 |
| 3 | 3 | 6 | 참 |
| 4 | 4 | 10 | 참 |
| 5 | 5 | 15 | 참 |
| 6 | 6 | 21 | 거짓 → 종료 |
핵심 함정: total += n 이후 조건을 검사합니다. total = 21이 된 뒤에야 total < 20이 거짓이 되어 루프가 끝납니다.
total = 15일 때 아직 참이므로 한 번 더 실행됩니다.
문제 5. 1부터 합해서 100 넘기기¶
total = 0
n = 0
while total <= 100:
n += 1
total += n
print("Count:", n)
print("Sum:", total)
빈칸 정답
| 빈칸 | 정답 | 이유 |
|---|---|---|
total ______ 100 |
<= |
합이 100 이하인 동안 계속 더함. 100을 넘으면 종료 |
total += ______ |
n |
1, 2, 3, ... 을 차례로 더함 |
실행 추적
n=1 → total = 1
n=2 → total = 3
...
n=13 → total = 91 (91 <= 100, 계속)
n=14 → total = 105 (105 <= 100이 거짓, 종료)
<= 대신 <를 쓰면 합이 정확히 100일 때 한 번 더 돌게 됩니다. 100 자체는 넘지 않았으므로 <=가 맞습니다.