콘텐츠로 이동

SET 17 — 서술형 모범답안


1. 출력 ('Kim', 90.0, {'grade': 'A'})

*scores80, 90, 100을 튜플 (80, 90, 100)으로 모으고, **extragrade="A"를 딕셔너리 {'grade': 'A'}로 모읍니다. avg = (80+90+100)/3 = 90.0이며, 함수는 (name, avg, extra) 순서의 튜플을 반환합니다.

2. 출력 [10, 20, 30, 40, 50] [50, 40, 30, 20, 10] [999, 30, 40]

슬라이싱([::-1], [1:4])은 항상 새로운 리스트를 만들어 반환하므로 nums 자체는 전혀 바뀌지 않습니다. b[0] = 999b라는 새 리스트의 원소만 바꾸는 것이라 numsa에는 영향을 주지 않습니다.

3. 출력 -4 -3 3 4

math.floor()는 항상 더 작은 쪽(음의 무한대 방향)으로 내림하므로 -3.5-4가 됩니다. math.ceil()은 항상 더 큰 쪽으로 올림하므로 -3.5-3이 됩니다. 양수 3.5floor3, ceil4입니다.

4. 출력 1 [2, 3, 4] 5

*middle은 양 끝의 first, last를 제외한 나머지 원소들을 리스트로 모읍니다. first1, last5, middle[2, 3, 4]입니다.

5.

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

    def is_square(self):
        return self.width == self.height

6.

def word_count(text):
    counts = {}
    for word in text.split():
        counts[word] = counts.get(word, 0) + 1
    return counts

7.

def has_duplicates(lst):
    return len(lst) != len(set(lst))

8.

문제: shapes/__init__.pycircle.pyareacircle_area라는 이름으로만 패키지 네임스페이스에 등록했습니다. area라는 원래 이름은 shapes 패키지 자체의 속성으로 존재하지 않으므로, shapes.area(2)를 호출하면 AttributeError가 발생합니다(shapes.circle_area(2)는 정상적으로 12.56을 출력합니다).

고친 코드:

# shapes/__init__.py
from .circle import area as circle_area
from .circle import area

# main.py
import shapes
print(shapes.circle_area(2))
print(shapes.area(2))