IB 電腦科學操卷方法+歷屆試題(Paper 2):程式追蹤、二元搜尋與 OOP 附答案
- 2026-10-24
TUTORZONE 原創操卷模擬卷 · IB 電腦科學(Computer Science)Paper 2(2027 新課程 · Theme B)
依 IB 2027 新課程編寫:Paper 2(Theme B 運算思維與程式解難)SL 1 小時 15 分鐘、50 分、35%;HL 為 2 小時、80 分、40%。Paper 2 的程式題設 Python 與 Java 兩個版本,考生用自己學過的語言作答;HL 另加 OOP 與抽象資料類型(ADT)題。舊課程的 Paper 3 已取消。本卷為 Paper 2 操卷示範:6 題共 50 分,附逐步答案。
問:IB 電腦科學 Paper 2 考什麼、佔多少分?
直接答案:2027 課程 Theme B(運算思維與程式解難)——SL 1 小時 15 分鐘、50 分、35%;HL 2 小時、80 分、40%。範圍是 B1 運算思維、B2 程式、B3 OOP;HL 另加 B4 抽象資料類型。

考制速覽:2027 年評核結構
| 部分 | 內容 | 比重 | 時間 |
|---|---|---|---|
| Paper 2(Theme B) | B1 運算思維+B2 程式+B3 OOP,SL 50 分(HL 80 分) | SL 35%/HL 40% | SL 1 小時 15 分/HL 2 小時 |
| Paper 1(Theme A+個案) | A1–A4 概念+個案研究,SL 50 分(HL 80 分) | SL 35%/HL 40% | SL 1 小時 15 分/HL 2 小時 |
| 內部評核(computational solution) | 自選真實問題的電腦解難方案 | SL 30%/HL 20% | 35 小時 |
IB 電腦科學 Paper 2 操卷技巧:B1 不寫碼的算法思考題先做(約 22 分鐘),用文字講清步驟、輸入輸出與邊界情況;B2 程式題要寫可執行的程式碼(評分看變數、循環、條件與回傳),題目禁止內建排序就不要用 sort();B3 OOP 題要寫齊屬性、方法與封裝的理由。所有程式題都有 Python 與 Java 版本,用自己學過的語言,不要臨場轉語言。
本卷設計與版權說明
本卷為 TutorZone 原創操卷模擬卷:題目按 IB 電腦科學 Paper 2(2027 課程 Theme B)的卷制自行編寫,程式碼與答案為自行撰寫,並非 IB 歷屆試題、官方評卷參考或 IB 出版材料。
所有數值答案(追蹤結果、比較次數、平均值、結餘)已用程式覆核一次。
時間分配
| 部分 | 分數 | 建議時間 | 先做什麼 |
|---|---|---|---|
| Paper 2(Theme B) | SL 35%/HL 40% | B1 約 20 分鐘、B2 約 20 分鐘、B3 約 30 分鐘 | B1 不寫碼的算法思考先做,程式與 OOP 留後 |
| Paper 1(Theme A+個案) | SL 35%/HL 40% | Section A 約 55 分鐘、Section B 約 20 分鐘 | 概念+個案分析 |
| 內部評核(computational solution) | SL 30%/HL 20% | 與 Paper 1/2 同步做,不要留到最後 | 設計、開發、評估 |
問:Paper 2 是否需要寫程式?用哪個語言?
直接答案:要。Paper 2 一定要寫程式,官方為每條程式題提供 Python 與 Java 兩個版本,用學校教你的那一種作答,評分標準相同。
Paper 2:Theme B(B1 算法思考 15 分+B2 程式 15 分+B3 OOP 20 分)
全部必答;建議 70 分鐘完成、留 5 分鐘覆核。程式題用 Python 或 Java 作答均可。
第 1 題 (8 分)
執行程式碼片段,寫出輸出值,並逐步列出 total 在每次循環後的數值。
values = [4, 9, 2, 7, 5]
total = 0
for i = 0 to 4
if values[i] > 5 then
total = total + values[i] * 2
else
total = total + values[i]
end if
next i
output total
第 2 題 (7 分)
有序列表 data = [3, 8, 12, 17, 21, 26, 31, 35, 40, 44, 49, 53, 58, 62, 67]。(a) 用二元搜尋(binary search)找 53,寫出每次比較的中間值,並指出共比較幾次。(4 分)(b) 同一列表若用線性搜尋(linear search)找 53,最壞情況要比較幾次?(3 分)
第 3 題 (8 分)
寫一個函數 average_and_count(scores),回傳所有分數的平均值(四捨五入至 1 個小數位),以及分數大於或等於平均值的人數。
scores = [68, 54, 91, 47, 76, 83, 59]
(a) 寫出函數(4 分)。(b) 寫出回傳值(4 分)。
第 4 題 (7 分)
text = “Computer Science”。(a) 寫一個函數,回傳字串中母音(a、e、i、o、u,不分大小寫)的個數(4 分)。(b) 指出同一字串中大寫字母的個數,並解釋為何比較時要先轉成同一種大小寫(3 分)。
第 5 題 (10 分)
設計一個類別 BankAccount(單一類別)。(a) 列出兩個屬性與三個方法,並說明哪一項屬性是 private、為什麼(6 分)。(b) 帳戶結餘 500,依次執行:存入 250、提取 900、提取 180,寫出每次操作後的結餘,並說明提取 900 為何被拒絕(4 分)。
第 6 題 (10 分)
一個類別 Library 用列表 shelf 存放書名,方法有 add(title)、remove(title)、count()。(a) 寫出 remove(title) 如何安全處理「書名不存在」的情況(4 分)。(b) 依次執行 add(“A”)、add(“B”)、add(“C”)、remove(“B”),寫出 shelf 的內容與 count() 的回傳值(3 分)。(c) 解釋為何把 shelf 設為 private 比讓外部直接修改列表更安全(3 分)。
問:Paper 2 的 B1 算法思考題要寫程式碼嗎?
直接答案:不需要。B1 明確要求不寫程式碼的算法思考:用文字或流程圖寫出輸入、步驟、輸出與邊界情況,再評估效率(例如線性 O(n) 與二元 O(log n) 的差別)。
Paper 2 答案與評分
第 1 題
逐步追蹤(每步 1 分):total 依次為 4 → 22 → 24 → 38 → 43;輸出 43。關鍵在第 2 與第 4 次循環:9 與 7 大於 5,所以乘 2 之後才累加。
第 2 題
(a) 索引 0–14:中間 index 7 = 35(53 > 35,捨左半);新範圍 8–14,中間 index 11 = 53,命中——共比較 2 次(每次比較 1 分,答案 1 分)。(b) 線性搜尋最多要比較 15 次(逐個檢查全部元素,最壞情況目標在最後或不存在)。
第 3 題
(a) 先算 total = sum(scores)、mean = total / len(scores),再遍歷一次數 mean 以上的個數,回傳 round(mean, 1) 與個數(4 分:累加、平均、比較、回傳各 1 分)。(b) total = 478、mean = 68.3(68.29 四捨五入);68.3 以上的分數是 91、76、83,所以回傳 (68.3, 3)。注意 68 本身低於 68.29,不計入。
第 4 題
(a) 先把字串轉成小寫(text.lower()),再逐字檢查是否屬於 “aeiou”(4 分)。(b) 大寫字母有 2 個(C 與 S)。輸入可能大小寫混雜(例如 “COMPUTER” 或 “computer”),只比較小寫集合會漏掉大寫母音(A、E、I、O、U),令結果偏低,所以先統一大小寫(3 分)。
第 5 題
(a) 屬性:balance(結餘)、owner(戶名);方法:deposit(amount)、withdraw(amount)、get_balance()。balance 設為 private:只可以經 deposit/withdraw 修改,外部程式不能直接寫入負數或篡改結餘(封裝,6 分)。(b) 500 → 存入 250 後 750;提取 900 時 900 > 750,方法應檢查並拒絕,結餘仍為 750,回傳 False;再提取 180 → 570(4 分)。
第 6 題
(a) 先用 if title in shelf 檢查,存在才移除;不存在則回傳 False 或拋出例外,避免程式因找不到元素而中止(4 分)。(b) shelf = [“A”, “C”],count() 回傳 2(3 分)。(c) private 令列表只可以經 add/remove 改動,類別可以在每次改動時檢查重複書名、維持排序或記錄日誌;外部直接 append/delete 會繞過這些檢查,令狀態不一致(3 分)。
問:1 小時 15 分鐘怎樣分配?
直接答案:B1 約 20 分鐘、B2 約 20 分鐘、B3 約 30 分鐘,留 5 分鐘覆核;先做 B1 不寫碼那題,因為它最容易在時間壓力下被寫成程式碼。
最常見的失分位
| 失分位 | 表面做法 | 實際後果 | 正確做法 |
|---|---|---|---|
| 追蹤題只寫最終答案 | 沒有列出每步數值 | 過程分佔大部分 | 每次循環寫一行 total |
| 程式題用題目禁止的內建功能 | 直接 sort() | 該題只得 0 分 | 自己寫排序/搜尋 |
| OOP 只寫屬性 | 沒有方法或沒有封裝理由 | 封裝分數全失 | 屬性+方法+private 理由 |
| 演算法題直接寫碼 | B1 要求文字步驟 | 答錯題型 | 先用文字寫輸入、步驟、輸出 |
怎樣用這份卷
第一次操卷:完整計時 1 小時 15 分鐘,中途不翻資料、不開 IDE 自動完成。
對答案:追蹤題逐步對,程式題只看邏輯與邊界情況,不看語法風格。
第二次操卷:三至七日後重做,目標 1 小時內完成,並把程式題改用另一個語言寫一次。
問:操完這份卷之後應該做什麼?
直接答案:①把追蹤錯或漏寫邊界情況的題目抄入錯題本;②三至七日後重做,並改另一個語言寫一次;③接着操 Paper 3?不用——Paper 3 已於 2027 課程取消,改為操 Paper 1(Theme A+個案)。
常見問題 FAQ
這份卷同 IB 歷屆試題有關嗎?
沒有。題目、程式碼與答案都是 TutorZone 原創,並非 IB 歷屆試題、官方評卷參考或 IB 出版材料。
IB 電腦科學 Paper 2 考什麼?
2027 課程 Theme B:B1 運算思維、B2 程式、B3 OOP;SL 1 小時 15 分鐘、50 分、35%,HL 2 小時、80 分、40%。HL 另考 B4 抽象資料類型。
用 Python 定 Java 作答?
兩者都可以,視乎學校教哪一個;官方為每條程式題提供兩個語言版本,兩者的評分標準相同。
官方資源與延伸閱讀
| 資源 | 用途 |
|---|---|
| IB 電腦科學科目簡介(2027 首次考核) | 核對 Paper 1/2 的時間與比重 |
| IB 電腦科學課程更新(IBO) | Theme A/B 範圍與 Paper 3 取消 |
| https://www.tutorzone.com.hk/ib-computer-science-paper-1-mock-2027/ | IB 電腦科學 Paper 1 操卷模擬卷 |
同系列:IB 電腦科學操卷攻略(兩卷操卷次序、75 分鐘時間分配與 12 週時間表)|IB 電腦科學 Paper 1 操卷模擬卷|備考練習題總覽|IB 數字社會 Paper 1 模擬卷


