考試技能 · 10 道範例題

Python 輸出預測題與答案

輸出預測是對心智模型的緊湊測試。你需要追蹤值、原地修改、格式化和實際列印的字元,而不只是理解程式碼的大意。

850 道題在完整題庫中 · 0 道選擇 · 0 道填空 · 850 道輸出

這個主題考什麼

  • 逐行追蹤變數,而不是憑程式碼形狀猜答案。
  • 注意函式或方法是否原地修改了物件。
  • 作答前檢查空格、換行、引號和 print 分隔符。

常見錯誤

  • 只讀最後一個表達式,忽略前面某一行的修改。
  • sep 或 end 改變後,仍以為 print 會加空格。
  • 寫的是你期望的值,而不是 Python 實際輸出的字元。
範例題

範例題

10

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

  1. 輸出預測q0002

    1. 小明寫了下面這行,猜猜會列印出什麼?

    print(f"奶茶{3+5}元")
    顯示答案

    答案

    奶茶8元

    解析: 花括號裡是表達式而不是文字:Python 先把 3+5 算成 8 再插入,杯貼上的字就是 Milk tea 8 yuan,不是 Milk tea 3+5 yuan。

  2. 輸出預測q0182

    2. `decode('zmlyhgzxovrhlugvmzhgvkkrmthglmv')` 回傳什麼?

    from string import ascii_lowercase
    
    
    BLOCK_SIZE = 5
    trtbl = str.maketrans(ascii_lowercase, ascii_lowercase[::-1])
    
    
    def base_trans(text):
        return ''.join([character for character in text if character.isalnum()]).lower().translate(trtbl)
    
    
    def encode(plain):
        cipher = base_trans(plain)
        return ' '.join(cipher[idx:idx + BLOCK_SIZE]
                         for idx in range(0, len(cipher), BLOCK_SIZE))
    
    
    def decode(ciphered):
        return base_trans(ciphered)
    
    print(decode('zmlyhgzxovrhlugvmzhgvkkrmthglmv'))
    顯示答案

    答案

    anobstacleisoftenasteppingstone

    解析: 沒有空格時整串就是一整塊。逐字母鏡像後,33 個字元正好讀作 an obstacle is often a stepping stone。

  3. 輸出預測q0359

    3. 三杯咖啡的價格總和是多少?

    prices = [18, 22, 15]
    total = 0
    for price in prices:
        total += price
    print(total)
    顯示答案

    答案

    55

    解析: 迴圈把 18、22、15 累加進 total,列印 55。total 必須先初始化為 0,否則第一次 += 會拋 NameError。

  4. 輸出預測q0573

    4. 集合裡最大的元素是多少?

    s = {3, 1, 2}
    print(max(s))
    顯示答案

    答案

    3

    解析: max 掃描集合併回傳最大值 3;集合沒有順序也不影響,因為 max 比較的是值而不是位置,和順序無關。

  5. 輸出預測q0764

    5. `rebase(10, [5], 2)` 回傳什麼?

    def from_digits(digits, base):
        return sum(number * base ** idx for idx, number in enumerate(reversed(digits)))
    
    
    def to_digits(number, base_to):
        result = []
        while number > 0:
            result.append(number % base_to)
            number //= base_to
        if result:
            return result[::-1]  # list(reversed(result))
        return [0]
    
    
    def rebase(from_base, digits, to_base):
        if from_base < 2:
            raise ValueError("input base must be >= 2")
    
        if to_base < 2:
            raise ValueError("output base must be >= 2")
    
        if any(True for idx in digits if idx < 0 or idx >= from_base):
            raise ValueError("all digits must satisfy 0 <= d < input base")
    
        return to_digits(from_digits(digits, from_base), to_base)
    
    print(rebase(10, [5], 2))
    顯示答案

    答案

    [1, 0, 1]

    解析: 5 的二進位是 4 + 1,從高位到低位寫作 1、0、1;函式不斷取餘並收集這些數字,最後把結果倒序輸出。

  6. 輸出預測q1143

    6. 子類覆蓋會員總價方法,輸出什麼?

    class Order:
        def __init__(self, price):
            self.price = price
        def total(self):
            return self.price
    class MemberOrder(Order):
        def total(self):
            return round(self.price * 0.9, 2)
    print(MemberOrder(18).total())
    顯示答案

    答案

    16.2

    解析: 重寫的方法把單價乘 0.9 並保留兩位:18 × 0.9 = 16.2,會員價取代基礎價,呼叫點完全不變。

  7. 輸出預測q1448

    7. 營收降序、店名升序,列印什麼?

    rows = [('Hubin', 1800, 'B'), ('Hubin', 1500, 'A'), ('Gaoxin', 1800, 'C')]
    print(sorted(rows, key=lambda r: (-r[1], r[0])))
    顯示答案

    答案

    [('Gaoxin', 1800, 'C'), ('Hubin', 1800, 'B'), ('Hubin', 1500, 'A')]

    解析: -1800 排在 -1500 前,兩行 1800 因此靠前,同額時由店名決定,Gaoxin 在 Hubin 之前。

  8. 輸出預測q1596

    8. 統計「拿鐵」出現次數,輸出什麼?

    print('拿鐵拿鐵美式'.count('拿鐵'))
    顯示答案

    答案

    2

    解析: count 數的是不重疊出現次數,這句話裡 'latte' 出現兩次。count 區分大小寫,'Latte' 不會計入這兩次。

  9. 輸出預測q1782

    9. 海象運算子賦值後參與比較,輸出什麼?

    if (n := 5) > 3:
        print(n)
    顯示答案

    答案

    5

    解析: 海象運算子在條件裡把 5 賦給 n 並回傳這個值,5 > 3 成立,進到函式體時 n 已經有值;省掉的就是前面那行賦值。

  10. 輸出預測q2320

    10. 對重複標題去重並保持順序,輸出什麼?

    titles = ['新品', '會員日', '新品', '排行']
    seen = []
    for title in titles:
        if title not in seen:
            seen.append(title)
    print('|'.join(seen))
    顯示答案

    答案

    新品|會員日|排行

    解析: 迴圈只在標題未出現過時追加,第二個「新品」被丟棄,剩「新品|會員日|排行」,原有順序不變;用 set 就不保證順序。

常見問題

輸出預測如何判分?

練習器會比較去掉首尾空白後的完整文字,包括大小寫、空格和換行。

為什麼有些答案是多行的?

程式可能列印多行。這些題目使用文字框,要求按順序輸入完整輸出。

繼續保持練習節奏。

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

開啟完整練習