4단원 과제 정답: for 반복문¶
문제 1. range() 이해하기¶
① [0, 1, 2, 3, 4]
② [2, 3, 4, 5, 6]
③ [1, 4, 7]
④ [10, 8, 6, 4, 2]
해설
| 항목 | 식 | 결과 | 이유 |
|---|---|---|---|
| ① | range(5) |
[0,1,2,3,4] |
0부터 4까지 (stop은 포함하지 않음) |
| ② | range(2, 7) |
[2,3,4,5,6] |
2부터 6까지 |
| ③ | range(1, 10, 3) |
[1,4,7] |
1부터 3씩 증가, 10 전까지 |
| ④ | range(10, 0, -2) |
[10,8,6,4,2] |
10부터 2씩 감소, 0 전까지 |
④ 핵심 함정: 음수 step에서 stop 값(0)은 포함되지 않습니다.
문제 2. 중첩 for와 조건¶
① 3
해설
i + j == 2를 만족하는 (i, j) 쌍:
| i | j | i + j | == 2? |
|---|---|---|---|
| 0 | 0 | 0 | 아니오 |
| 0 | 1 | 1 | 아니오 |
| 0 | 2 | 2 | 예 |
| 1 | 0 | 1 | 아니오 |
| 1 | 1 | 2 | 예 |
| 1 | 2 | 3 | 아니오 |
| 2 | 0 | 2 | 예 |
| 2 | 1 | 3 | 아니오 |
| 2 | 2 | 4 | 아니오 |
총 3개: (0,2), (1,1), (2,0)
문제 3. for에서 break와 continue¶
① 1
② 3
③ 5
해설
| i | 짝수? | > 5? | 동작 |
|---|---|---|---|
| 0 | 예 | - | continue |
| 1 | 아니오 | 아니오 | print(1) |
| 2 | 예 | - | continue |
| 3 | 아니오 | 아니오 | print(3) |
| 4 | 예 | - | continue |
| 5 | 아니오 | 아니오 | print(5) |
| 6 | 예 | - | continue |
| 7 | 아니오 | 예 | break → 종료 |
핵심 함정:
- continue가 먼저 실행되어 짝수는 건너뜀
- i = 5는 5 > 5가 False이므로 break되지 않고 출력됨
- i = 7에서 7 > 5가 True가 되어 break
문제 4. 리스트와 in 연산자¶
① world
② code
③ 4
④ hello
⑤ world
해설
| 항목 | 식 | 결과 | 이유 |
|---|---|---|---|
| ① | words[1] |
world |
인덱스 1 = 두 번째 요소 |
| ② | words[-1] |
code |
음수 인덱스 = 뒤에서 첫 번째 |
| ③ | len(words) |
4 |
요소가 4개 |
"o" in w 검사:
| 단어 | "o" 포함? |
|---|---|
| "hello" | 예 (h-e-l-l-o) |
| "world" | 예 (w-o-r-l-d) |
| "python" | 아니오 |
| "code" | 예 (c-o-d-e) |
핵심 함정: "python"에는 'o'가 없습니다 (y가 있을 뿐). "hello", "world", "code"만 출력됩니다.
문제 5. FizzBuzz¶
for i in range(1, 16):
if i % 15 == 0:
print("FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else:
print(i)
빈칸 정답
| 빈칸 | 정답 | 이유 |
|---|---|---|
i ______ 15 |
% |
15의 배수인지 확인 (나머지가 0이면 배수) |
i ______ 3 |
% |
3의 배수인지 확인 |
i ______ 5 |
% |
5의 배수인지 확인 |
______: |
else |
어느 배수도 아닐 때 숫자 그대로 출력 |
핵심 함정: 15 == 0 검사가 가장 먼저 와야 합니다.
3의 배수 검사를 먼저하면 15도 "Fizz"로 출력되어 버립니다. elif 체인은 처음 참인 조건만 실행합니다.