파이썬 서술형 — SET 19¶
이름: ____________ 점수: _____ / 100
출력형은 실행 결과와 그렇게 되는 이유를 함께 서술하세요. 작성형은 실행 가능한 코드로 답하세요. (범위: 함수·클래스·모듈/패키지·딕셔너리·리스트·튜플·set 심화)
[Ⅰ. 출력 예측 + 이유 서술] (각 10점)¶
1.¶
def collatz_steps(n):
steps = 0
while n != 1:
if n % 2 == 0:
n //= 2
else:
n = 3 * n + 1
steps += 1
return steps
print(collatz_steps(6))
출력: ________________
이유:
2.¶
students = [("Kim", 85), ("Lee", 90), ("Park", 85), ("Choi", 90)]
students.sort(key=lambda x: -x[1])
print(students)
출력: ________________
이유:
3.¶
import math
a = math.pow(2, 3)
b = 2 ** 3
print(a, b, type(a), type(b))
출력: ________________
이유:
4.¶
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
return self.x == other.x and self.y == other.y
p1 = Point(1, 2)
p2 = Point(1, 2)
p3 = p1
print(p1 == p2, p1 is p2, p1 == p3, p1 is p3)
출력: ________________
이유:
[Ⅱ. 코드 작성] (각 15점)¶
5. (딕셔너리) 키와 값을 서로 바꾼 새 딕셔너리를 반환하는 함수 invert_dict(d)를 작성하세요.¶
invert_dict({"a": 1, "b": 2}) → {1: 'a', 2: 'b'}
6. (튜플) (x, y) 좌표 튜플들의 리스트를 받아 원점 (0, 0)에서 가장 가까운 좌표를 반환하는 함수 closest_pair(points)를 작성하세요.¶
closest_pair([(3, 4), (1, 1), (0, 5)]) → (1, 1)
7. (set) 두 문자열에서 한쪽에만 등장하는 문자들을 정렬된 리스트로 반환하는 함수 unique_chars(s1, s2)를 작성하세요.¶
unique_chars("abc", "bcd") → ['a', 'd']
[Ⅲ. 오류 찾기·수정] (15점)¶
8.¶
# utils/__init__.py
from .math_tools import add, sub
# utils/math_tools.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
def mul(a, b):
return a * b
# main.py
import utils
print(utils.add(2, 3))
print(utils.mul(2, 3))
이 코드를 실행하면 어떤 문제가 발생하는지 설명하고, 올바르게 고친 코드를 작성하세요.