콘텐츠로 이동

SET 17 — 서술형 모범답안


1. 출력 [1, 2] [1, 2]

itemsself 없이 클래스 블록에 정의된 클래스 변수라 모든 객체가 같은 리스트를 공유한다. a.add(1), b.add(2)가 같은 리스트에 쌓여 둘 다 [1, 2]. (객체마다 독립시키려면 __init__ 안에서 self.items = [])

2. 출력

0 2
1 1
2 0
i + j == 2를 만족하는 (i, j)(0,2), (1,1), (2,0). 바깥 i가 0→1→2로 돌 때 각 조건을 만족하는 j에서 출력된다.

3. 출력 error

int("3.5")정수 형태가 아닌 문자열이라 변환에 실패해 ValueError가 발생한다(int"3"처럼 정수 문자열만 받는다). 따라서 except가 잡아 error 출력.

4. 출력 True False True

"a" in d 검사라 True. 1 in d도 키를 보는데 1은 키가 아니라 False(값이 1인 것과 무관). 2 in d.values() 중에 2가 있어 True.

5.

def fact(n):
    if n <= 1:
        return 1
    return n * fact(n - 1)

6.

def count_words(words):
    d = {}
    for w in words:
        d[w] = d.get(w, 0) + 1
    return d

7.

def my_max(nums):
    m = nums[0]
    for n in nums:
        if n > m:
            m = n
    return m

8.

문제: 함수 본문 print(...)들여쓰기가 없다. 파이썬은 들여쓰기로 코드 블록을 구분하므로 def 다음 줄은 들여써야 한다(IndentationError). 고친 코드:

def greet(name):
    print("Hello", name)

greet("Python")