콘텐츠로 이동

SET 19 — 서술형 모범답안


1. 출력 [[9, 0], [9, 0], [9, 0]]

table = [row, row, row]같은 리스트 row를 세 번 담은 것이라 세 칸이 모두 같은 객체를 가리킨다. table[1][0] = 9row를 바꾸면 세 행 모두 바뀐다. (독립시키려면 각 행을 따로 만들어야 함)

2. 출력

cleanup
1
return 1로 함수를 빠져나가기 직전에도 finally반드시 실행되어 cleanup을 먼저 출력한다. 그 뒤 함수가 1을 반환해 print(f())1을 출력.

3. 출력

[1, 4, 7]
[10, 7, 4]
range(1, 10, 3)은 1부터 3씩 증가(10 미포함) → 1, 4, 7. range(10, 1, -3)은 10부터 3씩 감소(1 미포함) → 10, 7, 4.

4. 출력 {5: 'apple', 6: 'cherry'}

키는 단어의 길이. apple(5)→d[5], banana(6)→d[6], cherry(6)→d[6]인데 같은 키 6에 다시 대입되어 bananacherry로 덮어써진다.

5.

def min_max(nums):
    return min(nums), max(nums)

6.

def char_freq(s):
    d = {}
    for ch in s:
        d[ch] = d.get(ch, 0) + 1
    return d

7.

def fib_list(n):
    result = []
    a, b = 0, 1
    for _ in range(n):
        result.append(a)
        a, b = b, a + b
    return result

8.

문제: 함수 안에서 total += n처럼 전역 변수에 대입하려 하면 파이썬은 total을 지역 변수로 간주하는데, 아직 값이 없는 상태에서 더하기를 시도해 UnboundLocalError가 난다. 고친 코드:

total = 0
def add(n):
    global total
    total += n

add(5)
print(total)   # 5