资讯动态

计算机二级Python:选择题细节与操作题按步得分策略

发布时间:2026/10/25 3:06:07 来源:尧图企业网站定制
简介面向全国计算机二级Python科目备考人群的题库与答案合集适合需要系统刷题、自测纠错和考前查漏补缺的考生使用。包内共205个文件以129个Python脚本、50个文本文件为主辅以运行结果截图、说明文档及少量CSV、DAT示例数据和许可证文件压缩包约831KB体积轻便便于在本地按题型和模块整理练习。已有4478人学习下载说明其在二级Python备考场景中具有一定参考价值。资源重点在于题目与答案的配套脚本可用于运行验证和对照参考解法文本与文档承载题干、答案解析及刷题经验截图有助于核对输出结果示例数据则方便练习文件读取与数据处理类题目。读者可据此按知识点分块练习结合答案复盘语法细节、流程控制、函数使用和文件处理思路逐步定位薄弱环节提升应试熟练度与答题准确率。1. 别把二级 Python 当编程考试40 分选择题才是分水岭很多人复习 python 计算机二级的第一反应是狂刷语法结果上了考场才发现拉开差距的不是会不会写 for 循环而是那 40 分选择题里的细节——s[1:8:2]到底切出几个字符、for...else里的 else 什么时候才执行。python 考试里最容易被跳过的一类题恰恰是这种「看一眼觉得会、写出来就错」的题。这场考试考三样东西语法细节的准确度、公共基础 10 分的记忆量、操作题按步骤拿分的执行力。总分 100 分60 分及格操作题占 60 分是主战场但选择题错超过 8 道操作题就得接近满分才补得回来。适合已经能看懂代码、却总在细节处丢分的人。2. 题型与分值40 分选择加 60 分操作时间怎么倒推复习之前先看分值分布因为分值决定投入顺序。二级 Python 的卷面结构非常固定40 道选择题每题 1 分后面三道操作题合计 60 分考试时间 120 分钟。真正让人翻车的不是不会做而是时间分配错了——有人前 40 道选择纠结 50 分钟最后综合应用题只剩 20 分钟代码写到一半被迫交卷。下面先给分值地图再讲公共基础那 10 分怎么背最后说操作题的给分逻辑。把这三件事搞清楚再回头刷题库效率完全不一样。2.1 分值地图四块分数各自的及格底线题型分值题量建议用时及格底线选择题公共基础 10 Python 304040 题35 分钟错不超过 8 题基本操作题151 组3 空左右15 分钟拿满简单应用题251 题30 分钟拿 20 分以上综合应用题201 题35 分钟拿 12 分以上机动检查——5 分钟保存文件这张表的关键信息是基本操作题的 15 分是全场最容易拿的分它通常只挖 3 到 5 个空而且只允许在横线处填代码不许改动原有逻辑。很多人觉得它「太简单没意思」考完发现恰恰是这 15 分救了自己。选择题 40 分里公共基础只占 10 分Python 语法占 30 分。这意味着语法细节的性价比是公共基础的三倍——同样花一小时啃字符串格式化的收益远高于背软件工程生命周期。但公共基础那 10 分属于「背了就有」的确定分后期一定要补上。2.2 公共基础 10 分背三张表就能守住公共基础不考任何 Python 代码考的是数据结构与算法、程序设计基础、软件工程基础、数据库设计基础四块。它的特点是范围固定、题型固定、重复率高是典型的送分题。复习时不用看教材原文把三类计算题和两张概念表记住就够。第一类是二叉树结点计算。只要记住一个关系任何一棵二叉树里度为 0 的结点叶子总比度为 2 的结点多一个。真题里常见的问法是某二叉树有 15 个度为 2 的结点叶子结点数是多少直接套答案是 16。变体是给总结点数求叶子数那就先算度为 1 的结点再减。第二类是排序与查找的比较次数。顺序查找最多 n 次二分查找最多 ⌈log₂n⌉ 次冒泡、快速、插入这些排序的最坏情况要能对上号。第三类是栈和队列的出入顺序栈是后进先出队列是先进先出题目会给一串入栈序列让你判断哪个出栈序列不可能出现——判断方法只有一个任何时刻出栈的元素必须是当前栈顶。概念表主要背两套。软件工程那张表需求分析阶段产出需求规格说明书测试分白盒看内部逻辑和黑盒只看输入输出软件生命周期包含定义、开发、运行维护三个阶段。数据库那张表E-R 图中一个实体转成一张关系表两个实体的联系类型分 1:1、1:n、m:nm:n 的联系需要单独建表。提示公共基础题不用做难题历年真题里的同类题刷两轮见过就会,没见过就只能靠猜。2.3 操作题按步给分为什么「跑通」和「得分」是两回事操作题的最大误区是以为程序跑起来没报错就能得分。实际评分方式一般是比对结果文件或标准输出也就是说评分程序只看输出对不对不看你代码写得多好看。这就带来三个实操结论。第一输出格式必须严格对齐题目要求分隔符是逗号还是空格、保留几位小数、要不要换行全是分。有人代码逻辑全对就因为多打了一个空格25 分变成 18 分。第二不要自作聪明改文件名和路径题目让你读data.txt写out.txt你就老老实实按这个来改成绝对路径反而可能找不到文件。第三程序填空只能动横线哪怕你觉得上半段代码写得丑也不能改——改了就按错误处理。再讲一个容易被忽略的点操作题的评分常常是「按步骤给分」。简单应用题如果是词频统计那么读文件、分词、统计、排序、输出五个步骤可能各占一部分分。这意味着哪怕你最后排序写错了前面读文件写对了也有分。所以考场上千万不要因为最后一步卡住就整题清空重写把能写的步骤先写满。还有一个血泪经验交卷前一定要手动运行一次看输出文件和题目给的示例输出是否逐字符一致。眼睛看三遍不如复制出来对一遍。3. 高频考点选择题反复考的六类语法与四类库Python 部分 30 分选择题题目看着杂其实来来回回就那几个考点。把高频点按出现频次排一下前六名基本能覆盖八成题目字符串切片与格式化、循环结构与 else 子句、组合数据类型的方法、函数参数与作用域、文件读写模式、第三方库的常用函数。下面按块拆开讲每块都给能直接背的判断依据。3.1 数据类型与表达式切片、格式化、取整切片是每年必考的点。规则只有一条s[start:end:step]里 start 和 end 都是下标左闭右开end 取不到。step 为负表示从右往左。s[::-1]是反转s[-3:]是最后三个字符s[1:8:2]是从下标 1 开始每隔一个取一个、取到下标 7 为止。字符串格式化考的是格式说明符的读法。{:8.2f}.format(3.14159)拆开看表示右对齐8是总宽度.2f是保留两位小数的浮点。结果长度正好 8前面用空格补齐得到3.14。如果把换成0得到的是00003.14用 0 填充而不是空格。取整这块有个坑round()用的是银行家舍入遇到 .5 时向偶数靠。round(2.5)是 2round(3.5)是 4round(-2.5)是 -2。而int()是直接截断int(-2.7)得到 -2 不是 -3。这三种取整方式经常被放在同一个选项里让你比。整除和取余的符号跟除数走7 // -2是 -4-7 % 2是 17 % -2是 -1。规则是 Python 保证a (a // b) * b a % b恒成立所以余数的符号永远和被除数无关、和除数一致。3.2 控制结构for-else 与 break 的分工分支和循环本身不难难在几个特殊语法。for...else里的 else 不是在循环结束后无条件执行而是循环正常走完没有遇到 break才执行。这一条几乎每套题都会考判断方法很简单看循环体里有没有可能触发 break。continue跳过本次循环剩余语句回到循环头break直接终止整个循环。两者对 else 的影响完全不同continue 不影响 else 执行break 会让 else 不执行。面试官最想听的是你能不能一句话说清这个区别而不是背定义。循环嵌套的题通常给你两层 for 加一个条件让你数循环体执行了多少次。稳妥的做法是直接把变量范围写出来在小范围内手算别硬套公式。range 的三个参数也要熟range(1, 10, 3)产生 1、4、7 三个数end 取不到是永远的规则。3.3 函数与组合数据类型参数传递和常用方法函数部分的高频点是参数传递。Python 里所有参数都是「对象引用的传递」但因为整数、字符串、元组不可变列表、字典、集合可变表现出的效果不同传不可变对象进函数里改外面不变传列表进去 append外面会变。作用域考的是 global。函数内部只要对某个名字赋值这个名字默认就是局部变量想在函数里改外面的全局变量必须写global x。反过来函数里只读不写全局变量是不需要声明的。组合数据类型要背的是方法返回值。列表的sort()原地排序返回 Nonesorted()返回新列表append()返回 Nonepop()返回被删的元素字典的get(k, default)找不到返回默认值d[k]找不到直接报 KeyError。这些「返回值是 None 还是新对象」的差别是选择题最爱设的陷阱。集合的两个特性必背元素不重复、无序。所以len(set([1,1,2]))是 2而集合不能用下标访问。字典的键必须可哈希列表不能当键元组可以。3.4 四类必考库turtle、random、jieba、openpyxl第三方库的题分值不高但很稳考的都是最基础的那个函数。turtle 考绘图指令。forward(d)前进、right(a)右转 a 度、circle(r, stepsn)画正 n 边形、penup()/pendown()抬笔落笔、done()保持窗口不关闭。画正多边形时外角等于 360 除以边数所以画正三角形是right(120)。import turtle turtle.pensize(2) for i in range(5): turtle.forward(120) turtle.right(144) # 五角星的外角不是 180-36 turtle.done() # 不加这行窗口画完就闪退这段代码的关键在right(144)画五角星时每次转的是 180 减去内角 36 度得 144。很多人凭直觉写 72 或 108画出来是个歪的十边形。done()的作用是进入事件循环让窗口停留考试时如果题目要求「绘制完成后窗口保持」这一行就是得分点。random 考random.random()返回 [0,1) 的浮点数、random.randint(a,b)返回闭区间整数、random.choice(seq)随机取一个元素、random.shuffle(lst)原地打乱返回 None。jieba 考jieba.lcut(s)返回列表、jieba.cut(s)返回生成器、jieba.add_word(w)添加新词。openpyxl 考load_workbook()打开、wb.active取活动表、ws.iter_rows()遍历、单元格的.value。注意这几个库的导入方式别写错import jieba之后调用是jieba.lcut不是lcut。写成from jieba import lcut也对但题目原有代码已经写了 import 的你就不能重复导入。3.5 文件操作模式、编码、读法三件套文件题的失分点集中在三处。模式上r只读、w覆盖写、a追加写、加b是二进制。用w打开一个已有文件会立刻清空它这个特性在选择题里经常被拿来设陷阱。编码上读写中文必须显式写encodingutf-8不写就用系统默认编码在评分环境里很可能读出乱码。读法上要分清read()读全部返回一个字符串、readline()读一行、readlines()读全部返回列表且每行末尾保留换行符。最后这个细节最容易翻车——用 readlines 之后不 strip统计出来的长度全都多 1。写文件的规范写法是用 with它会自动关闭文件句柄避免忘记 close 导致内容没落盘。4. 真题演练五道选择题加两道操作题的答题思路考点讲完得落到题上。这一章按考试顺序走一遍先看选择题怎么在两分钟内排除到唯一答案再看程序填空怎么倒推空格最后看简单应用和综合应用这两道大题的固定套路。每道题都给完整代码和判断依据你可以直接拿去对照题库练。4.1 五道选择题从题干到排除项的思考过程第一题切片。已知s 0123456789求s[1:8:2]和s[-3:]的值。第一步定位下标0 对应字符 01 对应 1依此类推。第二步套左闭右开从 1 开始步长 2取 1、3、5、7到 8 之前停.所以第一个结果是1357。第二个s[-3:]从倒数第三个取到末尾是789。这类题不许跳步把下标写出来再取比在脑子里数快。第二题for-else。代码是for i in range(3): if i 1: continue; print(i, end) else: print(end)。执行过程i0 打印 0i1 被 continue 跳过i2 打印 2循环正常结束else 执行打印 end。输出02end。如果中间把 continue 换成 breakelse 就不会执行输出只有0。第三题字典取值。d {a: 1, b: 2}求d.get(c, 0) d.get(a, 10)。get 的第一个参数是键第二个是找不到时的默认值。d.get(c, 0)返回 0d.get(a, 10)因为键存在返回 1 而不是 10所以结果是 1。这题的陷阱在于有人把默认值当成「有值也加上」。第四题列表推导式。[x*x for x in range(6) if x % 2]。先看范围 0 到 5再看条件 x%2 为真即 x 是奇数剩 1、3、5平方后得[1, 9, 25]。条件的位置决定了是先筛后算如果写成[x*x if x%2 else 0 for x in range(6)]结果就变成六个元素。第五题round。print(round(2.5), round(3.5), round(-2.5))输出2 4 -2。银行家舍入遇到 .5 时向最近的偶数靠2.5 两边是 2 和 3取偶得 23.5 两边是 3 和 4取偶得 4-2.5 两边是 -2 和 -3取偶得 -2。这题记住「五前为偶应舍去五前为奇要进一」就够了。4.2 程序填空题先读输出再倒推空格程序填空的正确顺序不是从头读代码而是先看题目要求输出什么再回头找哪一步没做完。下面这道是文件处理的典型题统计data.txt中非空行的行数和最长一行的字符数输出行数和长度。f open(data.txt, r, encodingutf-8) lines f.________(1)________ # ① 一次读出所有行 f.close() count 0 maxlen 0 for line in lines: line line.strip() # 去掉行尾的换行符 if ________(2)________: # ② 空行不计入 continue count 1 if len(line) maxlen: ________(3)________ # ③ 更新最长长度 print(count, maxlen)三个空的答案分别是readlines()、len(line) 0写not line也对、maxlen len(line)。讲解放在后面① 处为什么是 readlines 而不是 read因为后面用 for 遍历read 返回的是一个大字符串遍历它得到的是单个字符逻辑就崩了。② 处必须先 strip 再判空因为 readlines 保留每行的\n一个空行 strip 之前长度是 1判不出来。③ 处是最容易写错的地方很多人写成maxlen len(line) maxlen那得到的是布尔值后面输出就变成 True。提示程序填空的每个空通常对应一个完整动作填空时先想「这一步要完成什么」再去想用哪个函数比逐个试要快。4.3 简单应用题jieba 词频统计的固定五步简单应用题 25 分最高频的就是词频统计几乎年年换皮不换骨。题目一般给一个文本文件要求分词后统计词频过滤掉长度为 1 的词输出出现次数最多的前 10 个。import jieba with open(data.txt, r, encodingutf-8) as f: txt f.read() words jieba.lcut(txt) # 精确模式分词返回列表 counts {} for w in words: if len(w) 1: # 过滤单字和标点 continue counts[w] counts.get(w, 0) 1 # 不存在时默认 0再 1 items list(counts.items()) # 转成 [(词, 次数), ...] items.sort(keylambda x: x[1], reverseTrue) # 按次数降序稳定排序 for i in range(10): print({}\t{}.format(items[i][0], items[i][1]))这段代码有五个必须理解的细节。第一用 with open 而不是裸 open保证文件句柄释放。第二jieba.lcut返回列表jieba.cut返回生成器题目如果要求「输出为列表」就必须用 lcut。第三counts.get(w, 0) 1是计数的标准写法比先判断 in 再赋值少一次查找也不会因为键不存在报 KeyError。第四counts.items()返回的是视图对象不能直接 sort必须套一层 list。第五排序的 key 用lambda x: x[1]x 是元组x[1] 是次数Python 的 sort 是稳定排序次数相同的词会保持首次出现的顺序这一点在答案有并列时很重要。如果题目要求输出到文件而不是打印把最后两行换成写入即可注意写入时同样要指定encodingutf-8并且每条记录后面手动加\n。4.4 综合应用题openpyxl 读表、计算、排序、写出综合应用题 20 分通常是多步骤任务读一个 Excel 表按某几列算出结果排序后写到文本文件或另一个表。评分点分散在每一步所以哪怕排序没写好前面的读取和计算也有分。from openpyxl import load_workbook wb load_workbook(score.xlsx) # 打开工作簿 ws wb.active # 取第一个工作表 result [] for row in ws.iter_rows(min_row2, values_onlyTrue): # 跳过表头 name row[0] total sum(row[1:4]) # 三科求和 result.append((name, total)) result.sort(keylambda x: x[1], reverseTrue) # 按总分降序 with open(out.txt, w, encodingutf-8) as f: for name, total in result: f.write({}:{}\n.format(name, total))参数逐个说明min_row2表示从第二行开始遍历跳过第一行表头values_onlyTrue表示只取值不要单元格对象不加这个参数拿到的每个元素是 Cell取值得写.value多一层麻烦还容易漏。row[1:4]是切片取第 2 到第 4 列正好三科切片对元组同样有效。排序用result.sort()而不是sorted(result)因为这里不需要保留原列表。keylambda x: x[1]指定按第二项总分排reverseTrue是降序。写文件用w模式加 utf-8每条记录后手动换行。如果题目要求写到 Excel 里逻辑反过来先wb Workbook()建新表用ws.append([...])逐行追加最后wb.save(out.xlsx)。注意 save 的参数是文件名忘了写就白干。5. 易错点五类一考就翻车的题和它们的正确答法复习到后期真正拖分的不是不会的知识点而是这几类「每次都觉得自己对了」的题。下面五条按出错频率排每条都按「错在哪、为什么错、怎么答对」写建议对照题库把同类题单独抽出来做一遍。5.1 切片与 range 的边界差一错误错在哪s[1:8:2]有人算成 4 个字符取到下标 8 为止实际取到 7 就停range(1, 10, 3)有人算出 1、4、7、10 四个数实际只有三个。为什么错左闭右开这个规则背过但没内化一紧张就按闭区间数。range 的第三个参数是步长不是个数也容易混。怎么答对拿到题先在草稿纸上写下标序列写完再取。判断 range 元素个数用公式max(0, (end - start step - 1) // step)step 为正时或者干脆把数一个个列出来。选择题里时间够别图快。5.2 可变默认参数函数定义时的坑错在哪看到def f(a, b[])认为每次调用 b 都是新的空列表于是认为两次调用互不影响。为什么错默认参数的值在函数定义时求值一次之后一直复用同一个对象。b 是列表这种可变对象第一次 append 之后它就不再是空的了。怎么答对记住规则——默认参数只在定义时创建一次可变对象会被后续调用共享。所以f(1)返回[1]再调f(2)返回[1, 2]而不是[2]。正确写法是默认值用 None函数体里判断if b is None: b []。同类的还有浅拷贝问题b a[:]只复制一层嵌套列表还是共享的要深拷贝得用 copy 模块。5.3 作用域函数里赋值就变局部变量错在哪全局有个变量 x函数内部写了x x 1以为改的是全局的 x结果运行报 UnboundLocalError。为什么错Python 判断作用域看的是「函数体内有没有对这个名字赋值」只要有赋值语句整个函数内这个名字都是局部的不会去找全局。所以x x 1右边的 x 还没定义就报错。怎么答对想在函数内改全局变量第一行写global x。只读不改则不需要声明。另外注意如果函数内嵌套了函数内层改外层变量要用nonlocal。选择题考这个通常给一段代码问输出什么判断依据就是有没有 global 声明。5.4 操作题输出格式一个空格毁掉一整题错在哪代码逻辑全对输出用逗号分隔题目要求空格分隔或者浮点数没保留两位小数输出了 3.141592653589793。为什么错平时写代码习惯用 print 直接打没注意评分是逐字符比对。题目里的示例输出往往就摆在那但没人仔细看分隔符。怎么答对做题前先盯着示例输出看三件事分隔符是什么、小数保留几位、末尾要不要换行。然后倒推格式化写法逗号分隔用,.join()或print(a, b, sep,)保留两位用{:.2f}.format(x)。写完运行一遍把输出复制到记事本里和示例逐字对。注意写文件时如果题目要求每行一条记录f.write()不会自动换行必须手动加\n。这是操作题里最高频的失分点之一。5.5 库的调用方式import 之后名字变了错在哪写了import turtle却调用forward(100)报 NameError或者from openpyxl import load_workbook之后又写openpyxl.load_workbook()。为什么错import 的两种写法决定了调用时的前缀。import 库名之后必须写库名.函数名from 库名 import 函数名之后直接写函数名。两种混用就出错。怎么答对看题目原有代码怎么导入的跟着它的写法走别自己换。程序填空题里前面的 import 语句是白送的信息看它就知道后面该不该带前缀。另外注意import turtle和from turtle import *的区别后者虽然能直接调 forward但考试里不推荐容易和自定义函数重名。6. 押题与节奏最后两周把题库刷成得分点最后阶段别再从头看语法了收益太低。真正有效的是把题库按「错的次数」重排做三件事。第一件用三天把公共基础的历年题过一遍。这部分只有 10 分但重复率极高二叉树结点、排序比较次数、E-R 图转换、白盒黑盒测试这四个点几乎每年都出现。做题时不要只看对错把每个选项为什么错写一句在旁边写不出来就是没懂。第二件用一周专攻操作题按题型刷而不是按套卷刷。先把所有程序填空题连着做十道你会发现挖空的位置高度规律要么是文件打开模式要么是循环条件要么是累加更新。再连着做十道词频统计五步流程闭着眼都能写。综合应用题同理Excel 读写的模板代码背下来考场上只需要改列号和排序字段。第三件留三天做整卷计时模拟严格 120 分钟。这一阶段的目标不是提分是练时间分配选择题卡在 35 分钟内必须停不管还剩几道基本操作题 15 分钟简单应用 30 分钟综合应用 35 分钟最后 5 分钟检查文件是否保存、输出是否对得上。押题方向上优先看三类一是字符串切片和格式化的组合题二是 for-else 与 break/continue 的执行结果三是列表方法与字典 get 的返回值。操作题押 jieba 词频统计和 openpyxl 成绩处理这两个模板近几年的变体基本都在这两个框架里换数据。我自己带人复习时踩过最大的坑是前期把时间全花在看视频上感觉什么都懂了一动手写 turtle 就忘了done()。从那以后我每次带人复习都强制先做一套完整操作题再回头刷选择题手感这东西看是看不出来的。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑