콘텐츠로 이동

핵심 SET 13 — 정답 및 해설

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

1. 정답 ① [8, 2, 15, None] "+": 5+3=8, "-": 5-3=2, "*": 5*3=15, "?": 어떤 조건도 만족하지 않아 명시적으로 None을 반환합니다.

2. 정답 ① [1, 2, 3, 100] [1, 2, 3, 99] [1, 2, 3, 100] f(original)lst + [99]새 리스트를 만들어 반환하므로 original은 바뀌지 않고 new1 = [1, 2, 3, 99]. 이후 g(original)original을 직접 .append(100)으로 변경하므로 original[1, 2, 3, 100]이 되고, new2도 같은 객체를 가리켜 [1, 2, 3, 100].

3. 정답 ① 1331.0 raise_salary()를 3번 호출하면 1000 → 1100 → 1210 → 1331로 누적 곱해집니다(부동소수점 오차는 round(.., 1)로 매끄럽게 정리되어 1331.0으로 출력).

4. 정답 ① True False True math.sqrt(16)4.0(float)이라 4(int)와 ==는 값이 같아 True. 하지만 type(4.0) == type(4)float != int이므로 False. math.isclose(4.0, 4)는 두 수가 충분히 가까운지 검사하므로 True.

5. 정답 ① {'a': [1, 2, 99, 100], 'b': [3, 4], 'c': [1, 2, 99, 100]} d["c"] = d["a"]같은 리스트 객체c에도 연결합니다. 이후 d["c"].append(100)은 그 객체를 직접 변경하므로 ac 양쪽 모두에 100이 반영됩니다.

6. 정답 ① [99, 20, 30, 40] [99, 20, 30, 40] [10, 20, 30] b = a는 같은 객체를 가리키므로 a, b는 항상 같은 내용을 보입니다. c = a[:]그 시점까지의 내용을 복사한 별개의 리스트라 이후 변경에 영향받지 않아 [10, 20, 30] 그대로 유지됩니다.

7. 정답 ① (1, 2, 3, 4, 5) <class 'tuple'> *args는 튜플로 모이고, +=로 튜플을 이어붙여도 여전히 튜플입니다. a=(1,2,3), b=(4,5)를 합치면 (1, 2, 3, 4, 5).

8. 정답 ① 3 ['apple', 'banana', 'cherry'] .lower()로 대소문자를 통일하면 "APPLE""Apple"도 모두 "apple"이 되어 같은 단어로 취급됩니다. 중복 제거 후 고유 단어는 apple, banana, cherry 3개입니다.

9. 정답 ① [5, None, 10] validate(5)validate(10)은 조건을 만족해 그대로 반환됩니다. validate(-3)assert가 거짓이라 AssertionError가 발생하고 except에서 None을 추가합니다.

10. 정답 ① 12.56 9 shapes/__init__.pycircle.areasquare.area를 각각 circle_area, square_area라는 이름으로 패키지 네임스페이스에 등록했습니다. circle_area(2) = 3.14*2*2 = 12.56, square_area(3) = 3*3 = 9.