콘텐츠로 이동

핵심 SET 06 — 정답 및 해설

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

1. 정답 ③ 38 a=10, b=3, c=2, extra=(5,5), opts={'double': True}. total = 10 - 3 + 2 = 9. extra를 순회하며 5씩 두 번 더해 9+5+5=19. opts.get("double")True라 마지막에 2를 곱해 19*2=38.

2. 정답 ① ['huge', 'big-even', 'big-odd', 'small', None] classify(150)150>100이라 "huge". classify(50)50>10이고 짝수라 "big-even". classify(11)11>10이지만 홀수라 "big-odd". classify(5)5>0만 만족해 "small". classify(-3)은 어떤 조건도 만족하지 않아 암묵적으로 None을 반환합니다.

3. 정답 ④ 0 ['ok', 'ok', 'fail'] withdraw(50): total=55, 55>100이 거짓이라 balance=100-55=45, history=["ok"]. withdraw(40): total=45, 45>45는 거짓(같으면 인출 가능)이라 balance=45-45=0, history=["ok","ok"]. withdraw(10): total=15, 15>0이 참이라 인출 실패, history=["ok","ok","fail"]이고 balance는 그대로 0.

4. 정답 ④ (틀린 설명) from module import *는 모듈 안에 정의된 이름들만 가져올 뿐, module이라는 이름 자체는 만들어지지 않습니다. 나머지 ①②③⑤는 모두 모듈/패키지의 정확한 동작입니다.

5. 정답 ② {'a': 3, 'c': 4, 'd': 7} dict(raw)에서 같은 키가 중복되면 나중 값이 덮어씁니다(위치는 유지, 값만 갱신). a는 최종 3, b는 최종 5, c4. d["d"] = 3 + 4 = 7로 새 키 추가. del d["b"]b를 제거하면 {'a': 3, 'c': 4, 'd': 7}이 남습니다.

6. 정답 ① [2, 3, 5] [3, 2, 1] sorted(a) = [1, 2, 3, 5, 8, 9]이고 [1:4][2, 3, 5](원본 a는 바뀌지 않음). 이후 a.sort(reverse=True)로 원본을 내림차순 정렬하면 a = [9, 8, 5, 3, 2, 1]이 되고, a[-3:]은 마지막 3개인 [3, 2, 1].

7. 정답 ③ (9, 12, 21) x 값들의 합은 1+3+5=9, y 값들의 합은 2+4+6=12. 튜플은 (9, 12, 9+12) = (9, 12, 21).

8. 정답 ① [4, 5, 7] a & b(교집합)는 {4, 5}. b - c(차집합)는 b에서 c의 원소(5, 6)를 뺀 {4, 7}. 둘을 합집합(|)하면 {4, 5, 7}, 정렬하면 [4, 5, 7].

9. 정답 ② 900.0 Lee:4000 각 직원의 보너스는 3000*0.1=300.0, 4000*0.1=400.0, 2000*0.1=200.0이며 합은 900.0(실수 연산이라 900이 아닌 900.0). max(team, key=lambda e: e.salary)는 연봉이 가장 높은 Lee를 반환하고, __repr__에 의해 "Lee:4000"으로 출력됩니다.

10. 정답 ① **hi** 2 tools/__init__.pybold를 패키지 네임스페이스로 가져오고 COUNT=0을 정의합니다. main.py에서 tools.COUNT를 두 번 증가시켜 2가 되고, tools.bold("hi")"**hi**"를 반환합니다.