資料結構 · 10 道範例題

Python 元組練習題與答案

元組看起來像帶括號的列表,但這些差別會影響你如何解包資料、保護值,以及構造字典鍵。這些題目覆蓋初學者在真實程式碼裡最常遇到的細節。

39 道題在完整題庫中 · 13 道選擇 · 13 道填空 · 13 道輸出

這個主題考什麼

  • 正確打包和解包,包括單元素元組的逗號。
  • 預測程式碼嘗試修改元組時會發生什麼。
  • 在需要固定形狀或可雜湊鍵時使用元組。

常見錯誤

  • 需要單元素元組時寫成 (1)。真正的單元素元組是 (1,),逗號不能少。
  • 嘗試給 tuple[index] 賦值。元組不支援元素賦值。
  • 以為元組總是更快或總是更好;應根據資料是否需要變化來選擇。
範例題

範例題

10

從完整題庫中挑出的 10 道代表題。先自己作答,再展開答案。

  1. 選擇題q0516

    1. 小明用元組存奶茶配方比例(糖:水:奶 = 1:5:3),元組和串列最大的區別是?

    1. 元組有序,串列無序
    2. 元組不可變,串列可變
    3. 元組只能存數字
    4. 串列更快
    顯示答案

    答案

    B. 元組不可變,串列可變

    解析: 元組有序且不可變,串列有序但可變。兩者都有序,真正的區別在可變性:需要修改內容就選串列。元組還能當字典的鍵,串列不行。

  2. 選擇題q0527

    2. 🧋 小明用元組存奶茶配方比例(不可改),元組不可變意味著?

    1. 不能重新賦值變數
    2. 不能修改元組內的元素
    3. 元組不能被引用
    4. 元組只能存數字
    顯示答案

    答案

    B. 不能修改元組內的元素

    解析: 不可變指的是內容不能原地修改,名字仍可重新綁定。元組的身份和長度都固定,所以能安全共用。所以元組適合放坐標、比例這類固定組合。

  3. 選擇題q0530

    3. 🧋 小明存單杯奶茶的規格,(42,) 的型別是?

    1. tuple
    2. int
    3. str
    4. list
    顯示答案

    答案

    A. tuple

    解析: 42 後面的逗號讓它成為單元素元組,type() 因此是 tuple。這是最小的合法元組,長度只有 1。

  4. 選擇題q0541

    4. 哪個方法統計某個值在元組裡出現的次數?

    1. count
    2. index
    3. find
    4. len
    顯示答案

    答案

    A. count

    解析: count(value) 在元組上可用,回傳相等元素的個數。index 給的是位置,find 屬於字串,len 數的是全部元素。

  5. 填空題q0518

    5. 小明把奶茶資訊 (名稱, 價格) = ("奶茶", 15) 拆到兩個變數裡,這利用了元組 ___ 機制

    顯示答案

    答案

    解包

    解析: 右邊把兩個值打包,左邊按位置逐個取出,這叫元組解包。名字個數必須與元素個數一致,否則拋 ValueError。

  6. 填空題q0534

    6. 🧋 小明解包奶茶的(名稱,價格,杯型),交換變數:a, b = ___ 實現互換

    顯示答案

    答案

    b, a

    解析: 先算右邊得到元組 (b, a),再解包回 a 和 b,不用臨時變數就完成了交換。右邊先於左邊求值。右邊先建好元組再解包,所以沒有中間變數也不會丟值。

  7. 填空題q0546

    7. 帶欄位名的輕量元組,常用哪個標準函式庫工廠?

    from collections import ____
    Point = namedtuple('Point', ['x', 'y'])
    顯示答案

    答案

    namedtuple

    解析: namedtuple 生成元組的子類,欄位還能按名字讀取,point.x 與 point[0] 都可用。它仍是元組,因此不可變。

  8. 輸出預測q0517

    8. 解包 + 元組相加,輸出什麼?

    t = (1, 2, 3)
    a, b, c = t
    print(b, t + (4,))
    顯示答案

    答案

    2 (1, 2, 3, 4)

    解析: 解包按順序把 1、2、3 綁給 a、b、c,所以 b 是 2。加 (4,) 回傳新元組 (1, 2, 3, 4),t 本身不變。

  9. 輸出預測q0525

    9. 看程式碼,寫出執行結果。

    for i, ch in enumerate("ab"):
        print(i, ch)
    顯示答案

    答案

    0 a
    1 b

    解析: enumerate 產出 (下標, 字元) 對,print 用空格分隔,所以先列印 0 a 再列印 1 b。下標從 0 開始。

  10. 輸出預測q0538

    10. 讀取內層元組的第一個元素。列印什麼?

    t = (1, (2, 3))
    print(t[1][0])
    顯示答案

    答案

    2

    解析: t[1] 回傳內層元組 (2, 3),再取 [0] 得到第一個元素,列印 2;鏈式下標一次走一層,別想一步到位。

常見問題

為什麼單元素元組需要逗號?

括號只是分組,逗號才建立元組。(1) 是整數 1,而 (1,) 是元組。

元組裡可以放列表嗎?

可以。元組本身不能重新賦值,但裡面的可變物件仍然可以變化。

繼續保持練習節奏。

完整題庫會在這個瀏覽器裡記住進度,支援依主題篩選,並包含每日一題和錯題重練。

開啟完整練習