파이썬 객관식 심화 — 핵심 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개만 둘 수 있다