点击上方蓝字·关注我们



CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为计算机和编程学习者提供学业能力验证的平台。GESP旨在提升青少年计算机编程能力,培训机构编编程教育水平,推广和普及计算机和编程教育。
GESP考察语言为图形化(Scratch)编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。
本次为大家带来的是2026年3月Python二级认证真题解析。
Python 二级
2026年3月
一、单选题(共15题,每题2分,共30分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
答案 | B | D | D | C | B | A | A | C | C | A | B | C | B | A | A |
【第1题】2026年春节联欢晚会上一个武术表演节目《武BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备( )。
A.用于检测重心的重力传感器
B.预装的AI算法程序
C.接收动作指令的遥控器
D.拍摄其他机器人的摄像头
【答案】B
【考纲知识点】计算机输入设备的概念
【解析】输入设备是用于向计算机系统输入数据和指令的硬件设备。
A选项重力传感器用于检测重心,是输入设备;
C选项遥控器用于接收外部指令,是输入设备;
D选项摄像头用于获取图像信息,是输入设备。
B选项预装的AI算法程序是软件,不是硬件设备,因此不能作为输入设备。
【第2题】下面代码用来找出输入的N个正整数中最大的一个。如果将代码段用流程图来表示,则L1标记的代码行应该使用的图形是( )。

A.圆形框
B.椭圆形框
C.平行四边形框
D.菱形框
【答案】D
【考纲知识点】流程图基本符号
【解析】流程图中,L1标记的代码行是条件判断语句if val > Max。条件判断在流程图中使用菱形框表示。圆形框和椭圆形框通常用于表示开始和结束,平行四边形框用于表示输入输出操作。
【第3题】有关下面Python的说法,正确的是( )。

A.为了方便初学者,print(PI)和print(pi)效果相同,即变量的大小写不敏感
B. print(PI)修改为print(Pi)能正常执行
C.不能用PI做变量名,因为要保存圆周率这个常量
D.将程序中PI全部改写为Pai,将能正常执行,不会报错
【答案】D
【考纲知识点】Python变量命名规则与大小写敏感性
【解析】Python是区分大小写的编程语言。
A错误,PI和pi是不同的变量;
B错误,Pi未定义,会报错;
C错误,PI可以作为变量名;
D正确,只要将所有的PI统一改为Pai,程序就能正常执行。
【第4题】下面选择项中,与Python表达式not (x > 5 and y <= 10)等价的是( )。 A. x <= 5 and y > 10
B. x > 5 or y <= 10
C. x <= 5 or y > 10
D. not x > 5 and not y <= 10
【答案】C
【考纲知识点】逻辑运算
【解析】not(A and B) = (not A) or (not B)。因此not(x > 5 and y <= 10)等价于(not x > 5) or (not y <= 10),即x <= 5 or y > 10。
【第5题】某同学执行Python代码print((0.1 + 0.2) == 0.3)时输出False,其原因是( )。
A. Python 的+运算符在处理小数时存在bug
B. 0.1、0.2和0.3在计算机中无法用二进制浮点数精确表示,导致0.1 + 0.2 的结果与0.3存在微小误差
C. == 运算符不能用于比较浮点数,只能用于整数
D.因为0.1 + 0.2 的数学结果不等于0.3
【答案】B
【考纲知识点】浮点数精度问题
【解析】计算机使用二进制表示浮点数时,0.1、0.2、0.3等十进制小数在二进制被表示为无限循环小数,无法精确表示。因此0.1+0.2的结果与0.3存在微小的精度误差,导致相等比较返回false。
【第6题】下面的Python代码执行后其输出是( )。

C. 10#10
D. 10
【答案】A
【考纲知识点】嵌套循环的执行过程
【解析】外层循环i从0到4,内层循环j从0到i-1。 每次循环tnt在上次的基础上递增
- i=0时,range(0)为空,内层循环0次,tnt=0,输出0#
- i=1时,range(1)为[0],内层循环1次,tnt=0+1=1,输出1#
- i=2时,range(2)为[0,1],内层循环2次,tnt=1+2=3,输出3#
- i=3时,range(3)为[0,1,2],内层循环3次,tnt=3+3=6,输出6#
- i=4时,range(4)为[0,1,2,3],内层循环4次,tnt=6+4=10,输出10#
最后输出tnt=10。所以结果是0#1#3#6#10#10。
【第7题】下面的Python代码执行之后的输出是( )。

A. 0#
B. -2#-1#1#
C. -1#0#
【答案】A
【考纲知识点】取模运算与逻辑非运算
【解析】range(-2, 2)生成-2, -1, 0, 1。not i % 3判断i能否被3整除(i%3==0)。在Python中,只有0能被任何数整除余0。i=0时,0%3=0,not 0为True,输出0#;其他值都不满足条件。
【第8题】下面的Python代码执行后其输出是( )。

C. 0#
D. 1#
【答案】C
【考纲知识点】for-else结构与break语句
【解析】外层循环i从1开始,进入循环后,内层循环j从0到0(因为i=1, range(1)=[0]),输出0#,然后执行break语句,跳出外层循环。由于循环是被break打断的,else子句不会执行。最终输出为0#。
【第9题】下面Python代码执行后其输出是( )。

A. 2
B. 4
C. 6
D. 8
【答案】C
【考纲知识点】continue和break在嵌套循环中的使用
【解析】外层循环i从1到3,内层循环j从1到4。
- i=1时,j=1,2,4时count++(j=3时continue跳过),count=3
- i=2时,遇到break直接跳出内层循环,count不变
- i=3时,j=1,2,4时count++,count=6最终count=6。
【第10题】下面4个选项中,与下面Python代码输出结果相同的是( )。

A. for i in range(5): print(i)
B. for i in range(1, 5): print(i)
C. for i in range(6): print(i)
D. for i in range(0, 6): print(i)
【答案】A
【考纲知识点】while循环与for循环的等价转换
【解析】原代码输出0,1,2,3,4。
A选项for循环从0到4,输出0,1,2,3,4,与原代码相同;
B选项输出1,2,3,4;
C选项输出0,1,2,3,4,5;
D选项输出0,1,2,3,4,5。
【第11题】下面Python代码执行后输出是( )。

A. 0
B. 5
C. 6
D. 7
【答案】B
【考纲知识点】continue和break在循环中的综合使用
【解析】循环执行过程:
- n=10,减1得9,9%3==0,continue
- n=9,减1得8,8%3!=0,8!=5
- n=8,减1得7,7%3!=0,7!=5
- n=7,减1得6,6%3==0,continue
- n=6,减1得5,5%3!=0,5==5,break最终输出n=5。
【第12题】下面Python代码执行后,其输出是( )。

A. 5
B. 15
C. 20
D. 30
【答案】C
【考纲知识点】循环中变量值的动态变化
【解析】range(i, -i)当i为负数时,生成从i到-(i-1)的序列。
- i=0时,range(0, 0)为空,内层循环0次
- i=1时,i=-1,range(-1, 1)为[-1, 0],内层循环2次
- i=2时,i=-2,range(-2, 2)为[-2, -1, 0, 1],内层循环4次
- i=3时,i=-3,range(-3, 3)有6个元素,内层循环6次
- i=4时,i=-4,range(-4, 4)有8个元素,内层循环6次
总次数=0+2+4+6+8=20。
【第13题】某学校图书馆的借阅卡号由6位数字组成。前5位是顺序编号,第6位是校验码,用于防止输错。校验码规则如下:将前5位数字相加,然后除以10的余数,就是第6位数字。如卡号123455的前5位之和为15,除以10的余数是5,故第6位为5。下面的Python代码用于判断卡号是否正确,横线处应填入的代码是( )。

A. tnt += order_num // 10 和tnt // 10 == check_num
B. tnt += order_num % 10 和tnt % 10 == check_num
C. tnt = order_num % 10 + tnt 和tnt % 10 = check_num
D. tnt = order_num % 10 和tnt // 10 == check_num
【答案】B
【考纲知识点】整数分解与校验算法
【解析】需要提取前5位数字的每一位并求和。使用order_num % 10可以取出最后一位数字,加到tnt中,然后order_num //= 10去掉最后一位。校验时,前5位之和tnt除以10的余数应该等于check_num,即tnt % 10 == check_num。
【第14题】下面的Python代码执行后其输出的数字图形是( )。

A. 
B. 
C. 
D. 
【答案】A
【考纲知识点】嵌套循环输出图形
【解析】外层循环i从1到4,内层循环j从1到i,输出j的值。
- i=1时,输出1
- i=2时,输出12
- i=3时,输出123
- i=4时,输出1234所以选A。
【第15题】某学校举办"校园演讲比赛",每位选手由8位评委打分(分数为0~10的整数),且每位评委必须打分。计分规则:若至少有5位评委给出大于等于6分,则成绩有效,最终得分为所有8位评委的总分;否则记为0分。以下程序通过键盘依次输入8个分数,并计算最终得分。横线处应填入( )。

A. total_score += score 和high_count += 1
B. total_score += score 和high_count += score
C. high_count += 1 和total_score += score
D. total_score *= score 和high_count *= 1
【答案】A
【考纲知识点】累加求和与条件计数
【解析】第一处横线需要累加所有分数,所以是total_score += score;第二处横线在score>=6时执行,需要统计高分评委数量,所以是high_count += 1。
二、判断题(共10题,每题2分,共20分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
答案 | √ | × | × | √ | √ | √ | √ | × | √ | √ |
【第1题】小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统。( )
【答案】√
【考纲知识点】计算机系统的组成
【解析】电话手表能够实现打电话、收发信息等功能,必须有操作系统来管理硬件资源和提供软件运行环境。现代智能手表通常运行在如Wear OS、watchOS等操作系统上。
【第2题】Python代码print(4 ** 2 == 2 * 2 ** 2)执行后的输出是True。( )
【答案】×
【考纲知识点】运算符优先级
【解析】**表示幂运算,根据运算符优先级,**的优先级高于*。==的优先级最低。4 ** 2 = 16;2 * 2 ** 2 = 2 * 4 = 8。16 == 8为False,所以输出False。
【第3题】下面的Python 代码执行时将报错,因为10是整数类型,a是布尔类型。由于类型不同,不能进行加法运算。( )

【答案】×
【考纲知识点】Python类型自动转换
【解析】在Python中,布尔类型可以自动转换为整数类型,True转换为1,False转换为0。因此10 + a等于11,不会报错,输出11。
【第4题】下面Python 代码执行后将输出0-3-6-9-。 ( )

【答案】√
【考纲知识点】continue语句与取模运算
【解析】当i%3等于0时(即i能被3整除),不执行continue,输出i和-。i从0到9,能被3整除的有0,3,6,9,所以输出0-3-6-9-,判断正确。
【第5题】执行下面的Python 代码,其语句print(N) 将被执行0 次或极多次(即死循环)。( )

【答案】√
【考纲知识点】while循环的条件判断
【解析】如果N输入为空字符串,while条件为假(空字符串为假值),循环体执行0次;如果N输入非空字符串,while条件永远为真(N的值不会改变),形成死循环,执行无数次。
【第6题】在下面的Python 代码中,删除continue 不影响执行效果。( )

【答案】√
【考纲知识点】continue语句的作用
【解析】continue语句用于跳过循环体剩余部分,进入下一次循环。在此代码中,continue之后没有其他语句,所以删除continue不影响执行效果。
【第7题】下列Python 代码用于计算从1 到 N(含N)的所有正整数中,数字3 出现的总次数。当N = 40时,共有14个3,包括3、13、23、30-39,其中33计两次,共计14个3。将代码while i != 0改为while i执行结果相同。( )

【答案】√
【考纲知识点】循环条件的等价形式
【解析】在处理正整数时,i != 0和i是等价的,因为非零整数在布尔类型中为True,0为False。当i=0时,两个条件都为假,循环结束。
【第8题】下面的Python 代码执行将不会有输出,因为内层循环j 总是 0开始,i * j % 10 == 0将会被满足,执行break,故而不会执行代码中的else 子句部分。( )

【答案】×
【考纲知识点】for-else结构与break的作用范围
【解析】break只能跳出当前所在的内层循环,不能跳出外层循环。当内层循环执行break后,外层循环继续执行i++。else子句是与外层for循环绑定的,由于内层循环的break不会导致外层循环非正常结束,所以else子句会在外层循环正常结束时执行一次,输出0(当i=9且内层循环正常结束时)。
【第9题】下列Python 代码执行后将输出1#4#9#16#16。( )

【答案】√
【考纲知识点】for-else结构的正确理解
【解析】当内层循环没有被break打断时,会执行内层for的else子句。
- i=1时,j=1,不触发break,1*1=1,执行else输出1#
- i=2时,j=1,2,不触发break,2*2=4,执行else输出4#
- i=3时,j=1,2,3,不触发break,3*3=9,执行else输出9#
- i=4时,j=1,2,3,4,不触发break,4*4=16,执行else输出16#
外层循环正常结束,执行外层else输出16。最终结果为1#4#9#16#16。
【第10题】下面Python 代码执行后输出如左图所示,将f" {i*j}"修改为f"{i*j:3}"即可实现右图输出。( )

【答案】√
【考纲知识点】格式化字符串与对齐
【解析】f"{i*j:3}"表示以3位宽度输出整数,不足3位时左补空格。这样可以使每个数字占3个字符宽度,实现右对齐的整齐输出效果,与乘法表的右对齐格式一致。
三、编程题(每题25分,共50分)

【考纲知识点】循环结构、整数分解、条件判断
【解题思路】
1. 读取L和R的值
2. 从L到R遍历每个整数i
3. 对每个i,统计其数位中数字2出现的次数
4.统计方法:使用while循环,每次取i的个位数(i%10),判断是否等于2,然后去掉个位数(i//=10)
5. 如果2的出现次数恰好为3,则计数器total_count加1
6. 输出最终结果total_count
【参考程序】

【程序解析】程序首先读取范围的起点left和终点right。然后通过for循环遍历区间[left, right]内的所有整数。对于每个整数i,使用while循环逐位检查:通过i%10获取个位数,判断是否等于2;通过i//=10去掉已处理的个位数。当i变为0时,所有位数都已检查完毕。如果数字2出现的次数count2恰好等于3,则将答案计数器total_count加1。最后输出total_count即为美丽数的数量。

【考纲知识点】嵌套循环、条件判断、图形绘制
【解题思路】
1. 使用双重循环,外层控制行i,内层控制列j
2. 判断每个位置(i,j)应该输出什么字符:
- 如果j是第1列或第n列:
- 如果i是第1行或第n行,输出"+"(顶点)
- 否则输出"|"(左右边框)
- 否则(中间列):
- 如果i是第1行或第n行,输出"-"(上下边框)
- 否则输出"*"(内部)
3. 每行结束后输出换行
【参考程序】

【程序解析】程序首先读取整数n。然后使用双重循环遍历n×n的每个位置。通过条件判断确定每个位置的字符:首先判断是否在左右边框(j==0或j==n-1),如果是再判断是否在上下边框来确定是顶点"+"还是竖边框"|";如果不在左右边框,则判断是否在上下边框来确定是横边框"-"还是内部"*"。每行结束后输出换行符。
策划:GESP技术委员会副主席 刘晓庆
技术支持:韩丹
【关于GESP第14次认证】

认证语言:
C++/Python/图形化编程

报名及交费时间:
2026年4月15日17:00-6月16日24:00

准考证下载及打印时间:
2026年6月23日9:30-6月27日9:30

认证时间:
1-4级 2026年6月27日 上午09:30-11:30
5-8级 2026年6月27日 下午13:30-16:30

认证方式:
全国各GESP考点内上机考试

报名方式:
登录GESP网站(https://gesp.ccf.org.cn/)进行报名或“CCF GESP”微信公众号报名。

认证安排及收费标准:
认证时间 | 认证级别 | 认证语言 | 认证费用 |
上午9:30-11:30 | 一级 | C++/Python/图形化 | 300元/人 |
上午9:30-11:30 | 二级 | C++/Python/图形化 | 320元/人 |
上午9:30-11:30 | 三级 | C++/Python/图形化 | 340元/人 |
上午9:30-11:30 | 四级 | C++/Python/图形化 | 360元/人 |
下午13:30-16:30 | 五级 | C++/Python | 380元/人 |
下午13:30-16:30 | 六级 | C++/Python | 400元/人 |
下午13:30-16:30 | 七级 | C++/Python | 420元/人 |
下午13:30-16:30 | 八级 | C++/Python | 440元/人 |

报名流程
📍第一种方式:GESP网站报名流程
步骤1:在电脑上使用Google Chrome浏览器/Microsoft Edge浏览器/Firefox浏览器进入GESP网站 (https://gesp.ccf.org.cn) ,参加过GESP认证的考生可直接点击【登录】;未参加过GESP的考生需先点击【注册】完成新用户注册→点击【登录】。
步骤2:进入认证列表,在对应的认证名称后点击【立即报名】。
步骤3:按顺序填写考生的报名信息,身份证信息、语言等级都填写完整后,选择考点,所选城市/区没有考点信息显示,则说明该地区暂无考点,请勾选其他城市/区。考点剩余机位数大于0,则可以报名该考点。填写完成后,点击【提交报名】。
步骤4:在报名信息确认界面,仔细核对报名信息后,点击【确认报名】。
注:如需修改考生信息,请点击【修改报名】。
步骤5:进入交费界面,选择支付方式(支付宝/微信)后,点击【确认】,然后扫码支付报名费用。
注:部分省市的考位数量变化较快,如交费页面提示该考点已报满,请点击【我的报名】后点击【取消报名】,重新填写报名信息后再提交。
步骤6:完成支付,认证报名成功。
步骤7:等待审核,已交费考生信息会依次审核。
步骤8:在指定时间内下载、打印准考证。
步骤9:参加认证。
📍第二种方式:GESP公众号报名流程
点击“CCF GESP”公众号底部菜单栏【GESP】→【报名认证】,同意授权,进行登录。登录后,其余报名步骤可参考“第一种方式”指引完成报名。


【联系我们】
1. GESP微信:关注“CCF GESP”公众号,点击“GESP小助手”即可交流。
2. GESP邮箱:gesp@ccf.org.cn
注:请在邮件中详细描述咨询的问题并留下考生的联系方式及姓名、身份证件号,以便及时有效处理。
3. GESP电话:0512-67656856
咨询时间:周一至周五(法定节假日除外): 上午 8:30-12:00;下午 13:00-17:30
扫描下方二维码关注GESP公众号,了解更多资讯

