콘텐츠로 이동

핵심 SET 07 — 정답 및 해설

문항 1 2 3 4 5 6 7 8 9 10
정답

1. 정답 ② [1, 2, 20, 3, 30] True b=[]는 함수 정의 시 단 한 번만 생성되는 가변 기본값이므로 모든 호출이 같은 리스트를 공유합니다. f(1): b=[1], 길이 1(홀수)이라 추가 없음 → x=[1]. f(2): b=[1,2], 길이 2(짝수)라 2*10=20 추가 → b=[1,2,20]. f(3): b=[1,2,20,3], 길이 4(짝수)라 3*10=30 추가 → b=[1,2,20,3,30]. x, y, z는 모두 같은 객체를 가리키므로 x is zTrue.

2. 정답 ② [5, 4, 3, 2, 1] acc is None일 때만 새 리스트를 만드는 안전한 패턴입니다. collect(5, None)acc=[]5 추가 후 collect(4, [5])4 추가 후 collect(3, [5,4])… 이런 식으로 n이 큰 값부터 차례로 추가되어 n==0이 되면 [5, 4, 3, 2, 1]을 반환합니다.

3. 정답 ② 80 30 50 [80, 30] set_volume에서 self.volume = v인스턴스 속성을 새로 생성하여 클래스 변수 Settings.volume을 가리지(shadow)만, Settings.volume 자체는 바뀌지 않습니다. 따라서 a.volume=80, b.volume=30이지만 Settings.volume은 여전히 50. 반면 Settings.log.append(v)클래스 변수인 리스트를 직접 변경하므로 두 인스턴스가 공유하는 log80, 30이 순서대로 쌓여 [80, 30]이 됩니다.

4. 정답 ① 3 4 6 7 / 2는 실수 나눗셈으로 3.5. math.floor(3.5)3, math.ceil(3.5)4. math.gcd(12, 18)은 최대공약수인 6. 따라서 3 4 6.

5. 정답 ① {'a': 1, 'c': 3, 'd': 4} list(d.keys())로 키 목록을 미리 복사해 두었기 때문에 순회 중 del을 해도 RuntimeError가 발생하지 않습니다. b(값 2, 짝수)만 삭제되어 {'a': 1, 'c': 3}이 남고, d["d"] = sum(d.values()) = 1+3 = 4가 추가되어 {'a': 1, 'c': 3, 'd': 4}.

6. 정답 ② False True False True a = a + [4]는 새 리스트를 만들어 a에 재바인딩하므로 ab와 다른 객체이지만 값은 같습니다([1,2,3,4]). b.append(4)b를 직접 변경([1,2,3,4]). c = b는 같은 객체를 가리키므로 c.append(5)를 하면 b도 함께 [1,2,3,4,5]가 됩니다. 따라서 a == b[1,2,3,4] == [1,2,3,4,5]False, b == c는 같은 객체라 True, a is bFalse, b is cTrue.

7. 정답 ② 14 ("a", (1,2))에서 x=1, y=21*2=2. ("b", (3,4))에서 x=3, y=43*4=12. 합은 2+12=14.

8. 정답 ② [3, 4, 5, 6] 초기 s={1,2,3}. 4는 없으니 추가 → {1,2,3,4}. 5는 없으니 추가 → {1,2,3,4,5}. 1은 있으니 제거 → {2,3,4,5}. 2는 있으니 제거 → {3,4,5}. 6은 없으니 추가 → {3,4,5,6}. 정렬하면 [3, 4, 5, 6].

9. 정답 ② Kim/18/USA/job=dev/level=3 name="Kim", age는 기본값 18 유지, country는 키워드 인자로 "USA"로 덮어써짐. extra={"job": "dev", "level": 3}이고, 파이썬 3.7+ 딕셔너리는 삽입 순서를 보존하므로 job이 먼저, level이 나중에 붙습니다.

10. 정답 ④ (옳은 설명) __init__.py는 내용이 비어 있어도 그 폴더가 패키지임을 파이썬에 알리는 역할을 합니다(전통적인 패키지 인식 방식). 나머지는 모두 틀린 설명입니다: ①은 내용이 없어도 인식되므로 틀림, ②는 모듈 재사용이 가능하므로 틀림, ③은 단순히 .py 확장자를 붙이는 것만으로는 패키지가 되지 않으므로 틀림, ⑤는 패키지 안에 여러 모듈을 둘 수 있으므로 틀림.