파이썬 서술형 — SET 17¶
이름: ____________ 점수: _____ / 100
출력형은 실행 결과와 그렇게 되는 이유를 함께 서술하세요. 작성형은 실행 가능한 코드로 답하세요. (범위: 함수·클래스·모듈/패키지·딕셔너리·리스트·튜플·set 심화)
[Ⅰ. 출력 예측 + 이유 서술] (각 10점)¶
1.¶
def info(name, *scores, **extra):
avg = sum(scores) / len(scores) if scores else 0
return name, avg, extra
print(info("Kim", 80, 90, 100, grade="A"))
출력: ________________
이유:
2.¶
nums = [10, 20, 30, 40, 50]
a = nums[::-1]
b = nums[1:4]
b[0] = 999
print(nums, a, b)
출력: ________________
이유:
3.¶
import math
print(math.floor(-3.5), math.ceil(-3.5), math.floor(3.5), math.ceil(3.5))
출력: ________________
이유:
4.¶
data = (1, 2, 3, 4, 5)
first, *middle, last = data
print(first, middle, last)
출력: ________________
이유:
[Ⅱ. 코드 작성] (각 15점)¶
5. (클래스) width, height를 받는 Rectangle 클래스를 작성하세요. area()는 넓이를, is_square()는 정사각형 여부(True/False)를 반환합니다.¶
r = Rectangle(4, 4)
print(r.area(), r.is_square())
→ 16 True
6. (딕셔너리) 문자열을 받아 공백으로 나눈 단어별 등장 횟수를 딕셔너리로 반환하는 함수 word_count(text)를 작성하세요.¶
word_count("a b a c b a") → {'a': 3, 'b': 2, 'c': 1}
7. (set) 리스트에 중복된 원소가 있는지 판별하는 함수 has_duplicates(lst)를 작성하세요.¶
has_duplicates([1, 2, 3, 2]) → True
has_duplicates([1, 2, 3]) → False
[Ⅲ. 오류 찾기·수정] (15점)¶
8.¶
# shapes/__init__.py
from .circle import area as circle_area
# shapes/circle.py
def area(r):
return 3.14 * r * r
# main.py
import shapes
print(shapes.circle_area(2))
print(shapes.area(2))
이 코드를 실행하면 어떤 문제가 발생하는지 설명하고, 올바르게 고친 코드를 작성하세요.