콘텐츠로 이동

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

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