콘텐츠로 이동

SET 16 — 서술형 모범답안


1. 출력 [1, 2, 3, 4]

b = a는 리스트를 복사하지 않고 같은 객체를 가리키는 별칭(alias)을 만든다. 따라서 b.append(4)a가 가리키는 리스트도 바꾼다. (복사하려면 b = a[:])

2. 출력 10 5

함수 f 안의 x = 10지역 변수라 함수 안에서만 유효해 f()10을 반환한다. 함수 밖의 전역 x는 영향을 받지 않아 그대로 5. (전역을 바꾸려면 global x 필요)

3. 출력

None
[1, 2, 3]
list.sort()는 리스트를 제자리에서 정렬하고 None을 반환한다. 그래서 첫 줄은 None, 둘째 줄에서 nums 자체는 정렬되어 [1, 2, 3].

4. 출력 3 3.5 1

7 // 2는 몫 3(정수), 7 / 2는 나눗셈 3.5(항상 실수), 7 % 2는 나머지 1.

5.

def evens(nums):
    return [n for n in nums if n % 2 == 0]
(또는 for + append로 작성해도 됨)

6.

def count_vowels(s):
    count = 0
    for ch in s:
        if ch in "aeiou":
            count += 1
    return count

7.

def sum3(n):
    total = 0
    for i in range(1, n + 1):
        if i % 3 == 0:
            total += i
    return total

8.

문제: for n in nums 끝에 콜론(:)이 빠졌다. 파이썬에서 for/if/def 등의 머리줄은 반드시 :로 끝나야 한다. 고친 코드:

def total(nums):
    s = 0
    for n in nums:
        s += n
    return s
(추가로 내장 함수와 같은 이름 sum을 변수로 쓰는 것은 피하는 게 좋다.)