SET 17 — 서술형 모범답안¶
1. 출력 ('Kim', 90.0, {'grade': 'A'})¶
*scores는 80, 90, 100을 튜플 (80, 90, 100)으로 모으고, **extra는 grade="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] = 999는 b라는 새 리스트의 원소만 바꾸는 것이라 nums와 a에는 영향을 주지 않습니다.
3. 출력 -4 -3 3 4¶
math.floor()는 항상 더 작은 쪽(음의 무한대 방향)으로 내림하므로 -3.5는 -4가 됩니다. math.ceil()은 항상 더 큰 쪽으로 올림하므로 -3.5는 -3이 됩니다. 양수 3.5는 floor가 3, ceil이 4입니다.
4. 출력 1 [2, 3, 4] 5¶
*middle은 양 끝의 first, last를 제외한 나머지 원소들을 리스트로 모읍니다. first는 1, last는 5, 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__.py는 circle.py의 area를 circle_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))