該 Python 程式定義了一個名為 secret 的函式,該函式旨在找出一個整數列表中的兩個數,使它們相加等於一個給定的目標數值 target。如果找到這樣的一對數,它將返回這兩個數的索引;如果沒有找到,它將返回一個空列表。
這個函式使用一個字典 seen 來記錄遍歷過的數字及其索引。對於 nums 列表中的每個數字,函式計算 target - num 的結果,並檢查該結果是否已經在 seen 字典中。如果是,它返回一個包含這兩個數索引的列表。如果不是,則將當前數字與其索引添加到 seen 字典中。
根據提供的代碼,我將手動評估每個 print 語句的結果:
print(secret([1,3,5], 4))
第一次迭代時,num 是 1,other 是 3。沒有找到,所以更新 seen 為 {1: 0}。
第二次迭代時,num 是 3,other 是 1。1 已經在 seen 中,所以返回 [0, 1]。
print(secret([2,3,6,8,10], 16))
第一次迭代時,num 是 2,other 是 14。沒有找到,所以 seen 變為 {2: 0}。
第二次迭代時,num 是 3,other 是 13。沒有找到,所以 seen 更新為 {2: 0, 3: 1}。
第三次迭代時,num 是 6,other 是 10。沒有找到,所以 seen 更新為 {2: 0, 3: 1, 6: 2}。
第四次迭代時,num 是 8,other 是 8。沒有找到,所以 seen 更新為 {2: 0, 3: 1, 6: 2, 8: 3}。
第五次迭代時,num 是 10,other 是 6。6 在 seen 中,所以返回 [2, 4]。
print(secret([1,3,5], 7))
第一次迭代時,num 是 1,other 是 6。沒有找到,所以 seen 更新為 {1: 0}。
第二次迭代時,num 是 3,other 是 4。沒有找到,所以 seen 更新為 {1: 0, 3: 1}。
第三次迭代時,num 是 5,other 是 2。沒有找到,所以 seen 更新為 {1: 0, 3: 1, 5: 2}。
因為沒有找到匹配的組合,所以返回 []。
因此,執行結果應該是:
[0, 1]
[2, 4]
[]