콘텐츠로 이동

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 = 55 > 5False이므로 break되지 않고 출력됨 - i = 7에서 7 > 5True가 되어 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 체인은 처음 참인 조건만 실행합니다.