108年地方特考四等程式設計概要
四、請寫出以下 Python 程式的執行結果。(15分) def secret(nums, target): seen = [ ] for index, num in enumerate(nums): other = target-num if other in seen: return [seen[other], index] else: seen[num] = index return [ ] print(secret([1, 3, 5], 4)) print(secret([2, 3 , 6, 8, 10], 16)) print(secret([1, 3, 5], 7)) |
答:
題目有誤,將 seen = [ ] 修改為 seen ={ }。
def secret(nums, target): seen ={ } for index, num in enumerate(nums): other = target-num if other in seen: return [seen[other], index] else: seen[num] = index return [ ] print(secret([1, 3, 5], 4)) print(secret([2, 3 , 6, 8, 10], 16)) print(secret([1, 3, 5], 7)) |
執行結果:
[0, 1]
[2, 4]
[ ]
說明:
def secret(nums, target): seen = [ ] for index, num in enumerate(nums): other = target-num if other in seen: return [seen[other], index] else: seen[num] = index return [ ] |
1.secret([1, 3, 5], 4):
index = 0, num = 1
other = 4-1 = 3
seen[1] = 0
index = 1, num = 3
other = 4-3 = 1
return [seen[1], 1] = > return [0, 1]
2.secret([2, 3 , 6, 8, 10], 16):
index = 0, num = 2
other = 16-2 = 14
seen[1] = 0
index = 1, num = 3
other = 16-3 = 13
seen[3] = 1
index = 2, num = 6
other = 16-6 = 10
seen[6] = 2
index = 3, num = 8
other = 16-8 = 8
seen[8] = 3
index = 4, num = 10
other = 16-10 = 6
return [seen[6], 4] = > return [2, 4]
3.secret([1, 3, 5], 7):
index = 0, num = 1
other = 7-1 = 6
seen[1] = 0
index = 1, num = 3
other = 7-3 = 4
seen[3] = 1
index = 2, num = 5
other = 7-5 = 2
seen[5] = 2
return [ ]