콘텐츠로 이동

파이썬 서술형 — SET 20 (종합)

이름: ____________ 점수: _____ / 100

출력형은 실행 결과와 그렇게 되는 이유를 함께 서술하세요. 작성형은 실행 가능한 코드로 답하세요. (범위: 1~8장 종합)


[Ⅰ. 출력 예측 + 이유 서술] (각 10점)

1.

class Counter:
    def __init__(self):
        self.count = 0
    def inc(self):
        self.count += 1
        return self.count

c = Counter()
print(c.inc(), c.inc(), c.inc())
출력: ________________ 이유:

2.

nums = [5, 3, 8, 1, 9, 2]
result = [n for n in nums if n > 4]
result.sort()
print(result)
출력: ________________ 이유:

3.

text = "a,b,,c"
parts = text.split(",")
print(parts, len(parts))
출력: ________________ 이유:

4.

d = {"x": 10}
print(d.get("y", 0) + d.get("x", 0))
d["y"] = d.get("y", 0) + 5
print(d)
출력: ________________ 이유:

[Ⅱ. 코드 작성] (각 15점)

5.

(이름, 점수) 튜플의 리스트를 받아, 점수가 60 이상인 사람만 {이름: 점수} 딕셔너리로 반환하는 함수 passed(pairs)를 작성하시오.

passed([("A", 80), ("B", 50), ("C", 95)])  →  {"A": 80, "C": 95}

6.

문자열을 받아 (모음 수, 자음 수)를 튜플로 반환하는 함수 vc(s)를 작성하시오. 공백은 세지 않는다.

vc("hello world")  →  (3, 7)

7.

점수 리스트를 받아 (평균, 최고점, 평균을 초과하는 인원 수)를 튜플로 반환하는 함수 grade_stats(scores)를 작성하시오.

grade_stats([70, 80, 90, 100])  →  (85.0, 100, 2)

[Ⅲ. 오류 찾기·수정] (15점)

8.

다음 함수는 보통은 잘 동작하지만 특정 입력에서 오류가 난다. 어떤 입력에서 무슨 오류가 왜 나는지 설명하고, 그 경우 0을 반환하도록 고친 코드를 작성하시오.

def average(nums):
    total = 0
    for n in nums:
        total += n
    return total / len(nums)