Examly題庫立即開始練習
國中教甄|資訊科技資訊科技114 年第 56 題單選題

以下Python程式碼的輸出結果為何? def S56O(): x = [1, 2, 3] y = x[:] def S56I(): nonlocal x 試題公告 y[0] = 4 x[2] += y[0] S56I() return x print(S56O())

A[1, 2, 3]
B[1, 2, 7]正確答案
C[4, 2, 3]
D[4, 2, 7]
答案與詳解
B
正確答案
若將誤植的試題公告還原為合法程式碼,y 是 x 的複製串列,S56I 只把 y[0] 改成 4,並讓 x[2] 加上 4,最終 x 為 [1, 2, 7],故選 B。

逐選項解析

A[1, 2, 3]✕ 錯誤
此選項假設內部函式沒有改變 x。但依命題意旨還原為合法程式碼後,S56I 內會執行 x[2] += y[0],使 x[2] 從 3 變成 7,因此不會仍是 [1, 2, 3]。若嚴格按字面插入試題公告執行,也會因語法錯誤而不會輸出此結果。
B[1, 2, 7]✓ 正確
依命題意旨將試題公告視為誤植文字並還原為合法程式碼後,x = [1, 2, 3],y = x[:] 產生新的串列物件。S56I 中 y[0] = 4 只改變 y,接著 x[2] += y[0] 使 x[2] = 3 + 4 = 7,因此回傳 [1, 2, 7]。
C[4, 2, 3]✕ 易錯陷阱
此選項誤以為 y = x[:] 會讓 y 與 x 完全共用同一串列,或以為 y[0] = 4 會同步改變 x[0]。實際上 x[:] 是複製出新的串列物件,y[0] = 4 只會改變 y,不會改變 x[0]。
D[4, 2, 7]✕ 易錯陷阱
此選項同時誤以為 x[0] 會變成 4,且 x[2] 會變成 7。還原後的合法執行結果只有 x[2] 受影響,x[0] 仍為 1,因此不是 [4, 2, 7]。

立即註冊,看進階詳解與知識整理

這題的進階詳解與知識整理,註冊就能看 · 每天 2 題免費

精選詳解
  • 秒殺解題技巧與破題關鍵
  • 關鍵知識表整理
  • 陷阱與易錯提醒
  • 同考點歷屆題庫連續刷題與錯題本

資訊科技 相關題目

想練更多資訊科技考古題?

Examly 收錄 38 萬+ 道歷屆題目,每題都有像這樣的精選詳解。免費下載,立即開練。

黑皮