콘텐츠로 이동

파이썬 서술형 — 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))

이 코드를 실행하면 어떤 문제가 발생하는지 설명하고, 올바르게 고친 코드를 작성하세요.