SET 17 — 서술형 모범답안¶
1. 출력 [1, 2] [1, 2]¶
items는 self 없이 클래스 블록에 정의된 클래스 변수라 모든 객체가 같은 리스트를 공유한다. 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")