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을 변수로 쓰는 것은 피하는 게 좋다.)