SET 18 — 서술형 모범답안¶
1. 출력 20 10¶
y = x는 그 순간 x의 값 10을 y에 대입한다. 그 뒤 x = 20으로 x만 새 값을 가리키게 바뀌고, y는 이미 받아둔 10 그대로. (정수는 변경 불가능하므로 재대입이 y에 영향을 주지 않음)
2. 출력 [2, 3, 4] [5, 4, 3, 2, 1] [4, 5]¶
nums[1:4]는 인덱스 1~3 → [2, 3, 4]. nums[::-1]은 전체 뒤집기 → [5, 4, 3, 2, 1]. nums[-2:]는 뒤에서 둘째부터 끝까지 → [4, 5].
3. 출력 10¶
재귀로 f(4) = 4 + f(3) = 4 + 3 + f(2) = ... = 4 + 3 + 2 + 1 + f(0). f(0) = 0에서 멈춰 합 10.
4. 출력 heo¶
문자를 하나씩 보며 "l"이 아닐 때만 result에 이어 붙인다. hello에서 l 두 개를 빼면 heo.
5.¶
def rev(s):
r = ""
for ch in s:
r = ch + r # 새 글자를 앞에 붙이면 뒤집힌다
return r
6.¶
def is_prime(n):
if n < 2:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
7.¶
def count_ge(nums, t):
count = 0
for n in nums:
if n >= t:
count += 1
return count
8.¶
문제: 리스트 nums의 유효한 인덱스는 0, 1, 2뿐인데 nums[3]은 범위를 벗어나 IndexError가 난다. 고친 코드:
nums = [1, 2, 3]
print(nums[-1]) # 또는 nums[len(nums) - 1] → 3