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 模拟卷


