콘텐츠로 이동

파이썬 객관식 심화 — 핵심 SET 07

이름: ____________ 점수: _____ / 100 난이도: ★★★★★

각 코드의 실행 결과 또는 옳은 설명을 보기에서 하나 고르세요. (문항당 10점, 범위: 함수·클래스·모듈/패키지·딕셔너리·리스트·튜플·set 심화)


1. (함수) 다음 코드의 출력은?

def f(a, b=[]):
    b.append(a)
    if len(b) % 2 == 0:
        b.append(a * 10)
    return b

x = f(1)
y = f(2)
z = f(3)
print(z, x is z)

[1, 2, 20, 3] False
[1, 2, 20, 3, 30] True
[3, 30] True
[1, 2, 20, 3, 30] False
Error

2. (함수) 다음 코드의 출력은?

def collect(n, acc=None):
    if acc is None:
        acc = []
    if n == 0:
        return acc
    acc.append(n)
    return collect(n - 1, acc)

print(collect(5))

[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
[5, 4, 3, 2, 1, 0]
[]
RecursionError

3. (클래스) 다음 코드의 출력은?

class Settings:
    volume = 50
    log = []
    def set_volume(self, v):
        self.volume = v
        Settings.log.append(v)

a = Settings()
b = Settings()
a.set_volume(80)
b.set_volume(30)
print(a.volume, b.volume, Settings.volume, Settings.log)

80 30 80 [80, 30]
80 30 50 [80, 30]
50 50 50 [80, 30]
80 30 50 []
Error

4. (모듈/패키지) 다음 코드의 출력은?

import math

a = math.floor(7 / 2)
b = math.ceil(7 / 2)
c = math.gcd(12, 18)
print(a, b, c)

3 4 6
4 3 6
3 4 5
3.5 3.5 6
Error

5. (딕셔너리) 다음 코드의 출력은?

d = {"a": 1, "b": 2, "c": 3}
for key in list(d.keys()):
    if d[key] % 2 == 0:
        del d[key]
d["d"] = sum(d.values())
print(d)

{'a': 1, 'c': 3, 'd': 4}
{'a': 1, 'b': 2, 'c': 3, 'd': 6}
{'b': 2, 'd': 2}
RuntimeError
{'a': 1, 'c': 3, 'd': 6}

6. (리스트) 다음 코드의 출력은?

a = [1, 2, 3]
a = a + [4]
b = [1, 2, 3]
b.append(4)
c = b
c.append(5)
print(a == b, b == c, a is b, b is c)

True True False True
False True False True
False False False False
False True True True
Error

7. (튜플) 다음 코드의 출력은?

data = [("a", (1, 2)), ("b", (3, 4))]
total = 0
for name, (x, y) in data:
    total += x * y
print(total)

10
14
7
Error
21

8. (set) 다음 코드의 출력은?

s = {1, 2, 3}
nums = [4, 5, 1, 2, 6]
for n in nums:
    if n in s:
        s.remove(n)
    else:
        s.add(n)
print(sorted(s))

[1, 2, 3, 4, 5, 6]
[3, 4, 5, 6]
[4, 5, 6]
[3, 4, 5]
Error

9. (함수) 다음 코드의 출력은?

def build_report(name, age=18, country="Korea", **extra):
    base = f"{name}/{age}/{country}"
    for k, v in extra.items():
        base += f"/{k}={v}"
    return base

print(build_report("Kim", country="USA", job="dev", level=3))

Kim/18/USA
Kim/18/USA/job=dev/level=3
Kim/18/Korea/job=dev/level=3
TypeError
Kim/18/USA/level=3/job=dev

10. (패키지) 다음 중 패키지 구조에 대한 설명으로 옳은 것은?

__init__.py는 반드시 코드 내용을 포함해야 패키지로 인식된다 ② 패키지 안의 모듈은 다른 패키지에서는 절대로 재사용할 수 없다 ③ 폴더에 .py 확장자만 붙이면 패키지가 된다 ④ __init__.py는 내용이 비어 있어도 해당 폴더를 패키지로 인식시키는 역할을 한다 ⑤ 패키지 폴더에는 모듈을 정확히 1개만 둘 수 있다