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