点击上方蓝字·关注我们



CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为计算机和编程学习者提供学业能力验证的平台。GESP旨在提升青少年计算机编程能力,培训机构编编程教育水平,推广和普及计算机和编程教育。
GESP考察语言为图形化(Scratch)编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。
本次为大家带来的是2025年12月Python二级认证真题解析。
Python二级
2025年12月
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
答案 | B | B | A | B | A | B | A | D | C | B | B | B | B | B | C |
第 1 题 近日,空中客车公司表示,约6000架空客A320系列飞机需要紧急更换一种易受太阳辐射影响的飞行控制软件。空客表示,在对一起飞行事故分析后的结果显示,强烈的太阳辐射可能会损坏飞行控制系统所需的关键数据,导致判断失误,进而引发飞行异常。那这里的飞行控制系统执行判断的部件最可能是下面的( )。
A. 辐射传感器
B. 处理器
C. 内存单元
D. 输出设备
【答案】B
【考纲知识点】计算机基础
【解析】
题目的侧重点是问“哪个部件负责执行判断逻辑” ,判断这个动作本身由处理器完成
第2 题 小杨最近为了备考GESP,开始看网络上关于网络知识的视频。其中提到计算机网络系统有不同的划分标准,其中之一就是按照地理覆盖的范围来划分。那他平时上学所在的教学楼内的网络是一个( )。
A. PAN
B. LAN
C. MAN
D. WAN
【答案】B
【考纲知识点】计算机网络
【解析】
PAN(个人区域网) 覆盖范围大约在10米以内,如蓝牙、ZigBee等设备组成的网络。通常用于个人设备之间的连接,不符合“教学楼内网络”的范围。
LAN(局域网)覆盖范围一般在几十米到几千米,例如一栋楼、一个校园、一个公司的内部网络。题干中“教学楼内的网络”是典型的局域网(LAN)。
MAN(城域网)覆盖一个城市范围的网络,比如城市内的多个校园网互连。教学楼内网络范围远小于城域网。
WAN(广域网)覆盖范围更大,可跨市、跨省甚至跨国,如互联网。显然不属于教学楼内的网络范畴。
因此,教学楼内的网络属于局域网(LAN),正确答案是B。
第3 题 下面有关Python变量的说法,正确的是( )。
A.不可以用 for作为变量名,因为 for是Python的关键字(保留字)。
B. _tnt 不可以是变量名,因为变量名的第一个字符必须是英文字母。
C. _tnt_ 不可以是变量名,因为最后一个字符容易与减号混淆。
D.可以用 print作为变量名,因为 print是关键字,但这不是好习惯,因为print 有约定的功能与含义。
【答案】A
【考纲知识点】变量的定义与使用
【解析】
A. 正确,for是python关键字,不能用作变量名。
B. 错误,python变量名允许以字母或下划线开头,_tnt是合法变量名。
C. 错误,_tnt_是合法的变量名(没有禁止最后一个字符是下划线)。
D. 错误,在Python 3 中,print 是内置函数名,不是关键字(保留字),因此可以把它用作变量名(会覆盖内置函数)。但它的确不是关键字,所以“因为print 是关键字”这部分说法错误。
因此正确选项是A。
第4 题 一个无限循环小数是0.123123123……,其小数点后第1位是1,后第2位是2,后第3位是3,后第4位是1,依此类推,求第N位。横线处应填入的代码是( )。

A. N % 3
B. (N - 1) % 3
C. N // 3
D. (N - 1) // 3
【答案】B
【考纲知识点】控制语句结构(顺序、循环、选择)
【解析】小数位按1,2,3重复,周期为3,可以用取模运算获取循环位置排除C、D,假设求第1位即N=1时,那么remainder的值应为0,代入选项可知
A:remainder=1%3=1
B:remainder=(1-1)%3=0
因此正确选项是B。
第5 题 某同学执行Python代码print(3 + 3.14) 时输出6.140000000000001,其原因是( )。
A. Python中整数和浮点数相加时,整数会被转换为浮点数,而某些十进制小数如3.14 无法用有限位二进制精确表示,从而产生微小的舍入误差。
B. Python的 print函数在输出浮点数时有默认小数点位数,因此输出了更多位数。
C. 3.14 是一个无限循环小数,在计算机中无法精确表示。
D.由于计算机CPU的运算错误导致。
【答案】A
【考纲知识点】基本数据类型
【解析】
A正确,某些带小数点的数或者浮点数不能被表示为有限位数,计算机采用最接近的方式表达。
B错误,print显示的是实际值,不是固定格式位数导致更多小数,这里显示出的长串小数就是因为二进制浮点表示不精确导致的误差值。
C错误,3.14作为十进制有限小数,在二进制中可能是无限循环小数,但这不等于3.14 在十进制里是无限循环小数。表述不严谨且没有触及本质原因。
D错误,这不是CPU 运算错误,是浮点数的固有表示特性。
因此答案选A。
第6 题 某单位工号的编码规则:编码总长5位,均为数字,前4位依次整除以3,其值累加之和除以10的余数为第5位数字。如某工号为76587,前4位分别整除3后,商分别为2、2、1、2,其累加之和为7,除以10的余数为7,故第5位为7。下面的程序依次输入前4位数字,并计算输出最后一位。程序逐行输入前4位数字,要输出第5位数字。则在横线处应填上的代码是( )。





【答案】B
【考纲知识点】循环结构、基本运算
【解析】前4位依次取商即N//3得到商并累加到rst中,第5位是累加结果rst除以10的余数,即rst%10,因此正确选项是B。
第7 题 下面的Python代码执行之后的输出是( )。

A. -1#1#
【答案】A
【考纲知识点】循环结构、分支结构
【解析】
python中取余运算符%的结果符号与除数的符号一致
循环从-2到1递增,-2%2=0不满足if,-1%2=1满足if,输出-1#,0%2=0不满足if,1%2=1满足if,输出1#,所以最后输出结果为-1#1#,因此正确选项是A。
第8 题 下面的Python代码执行后其输出是( )。

A. 100
B. 55
C. 45
D. 25
【答案】D
【考纲知识点】多层循环结构
【解析】
内层循环i次,每次cnt加1,所以只要知道外层的i依次是多少就可以知道cnt加了多少次1,而外层循环依次为1、3、5、7、9,所以cnt=1+3+5+7+9=25,因此正确选项是D。
第9 题 下面Python代码执行后其输出是( )。

A. 0 0
B. 11
C. 0
D. 0 11
【答案】C
【考纲知识点】多层循环结构、分支结构、控制结构
【解析】第6行先计算i*j再算%2,而j初始都为0,所以无论i为多少i*j%2都为0,都会break结束,由于是break结束的for循环第8行的else部分不会执行,不存在2个输出结果排除A、D,由于break结束时j=0,所以第10行else执行时i*0=0,只会输出一个0,因此正确选项是C。
第10 题 与下面Python输出效果不一致的代码是( )。





【答案】B
【考纲知识点】循环结构、分支结构
【解析】参考代码的作用是依次输出0~9,A、C、D均是先输出i再加1,效果相同,而B选项是先加1,再输出,输出结果为1~10,效果不同,因此正确选项是B。
第11 题 下面Python代码执行后输出是( )。

A. 3#6#
【答案】B
【考纲知识点】循环结构、分支结构
【解析】循环中num依次为1~6,只有当num为3、6时不满足第4行if条件,输出3#6#,循环不是break结束的所以会执行第7行else部分输出num的值为6,因此正确选项是B。
第12 题 下面Python代码执行后,其输出是( )。

A. 9
B. 10
C. 14
D. 20
【答案】B
【考纲知识点】多层循环结构
【解析】外层循环5次i依次为0~4,内层循环与i有关,内层循环次数依次为4次、3次、2次、1次,总循环次数为4+3+2+1=10,所以cnt的值为10,因此正确选项是B。
第13 题 漂亮数的定义是:如果N能被M整除,或者某位是M,或者N的每位数之和能被M整除,则说N是M的漂亮数。如果三个条件都满足,则是完整漂亮数。123是3的完整漂亮数,因为123能被3整除,也含有3,其每位数之和为6也能被3整除。下面的代码用于判断N是否为M的完整漂亮数并输出。相关说法正确的是( )。

A.代码能完成题目设定目标。
B. 在while 循环中N 最终将变成0,因为代码N % M 将总是满足条件,可以在while 前增加一行代码old_num = N ,并将 N % M 改为 old_num % M ,随后 print()中的 {N} 改为{old_num} 。
C. while 循环中 if判断语句可以增加 else子句,其内容为 Flag = False 。
D.如果先后输入 0和 3 ,则肯定会输出0是3的完整漂亮数 。
【答案】B
【考纲知识点】循环结构、分支结构
【解析】逐个选项分析
A:在while 循环中N最终将变成0,因此第17行代码中N % M 将总是满足条件,不能完成题目设定目标
C:如果增加else子句,那么只要num不是M,Flag就会被重置为0,而题目要求是某位为M,导致逻辑错误
D:若N=0则while不成立,Flag为0第17行的if不成立输出0不是3的完整漂亮数
只有B的描述是正确的,在while中N不断除以10直到为0,导致最后判断不正确,因此需要提前保存原始N的值用于判断
第14 题 阅读下面的Python代码。执行后如输入5 ,其输出的字符图形是( )。





【答案】B
【考纲知识点】多层循环结构
【解析】
当n=5时,外层循环控制行数,i=0~4共5行
第1行(i=0):打印空格j<5-0-1 即4个,打印星号k<2*0+1即1个
第2行(i=1):打印空格j<5-1-1 即3个,打印星号k<2*1+1即3个
……
第5行(i=4):打印空格j<5-4-1 即0个,打印星号k<2*4+1即9个
观察选项图形,只有B符合 空格数递减星号按1,3,5…递增的金字塔形状
第15 题 某学校举办“十佳歌手大奖赛”,经过选拔最终参赛选手有25人,评委10人,最终计分规则去掉一个最高分去掉一个最低分作为该参赛选手的最终得分,并输出该得分。每位评委都必须打分,且分数都大于等0。相关说法正确的是( )。

A.程序总体逻辑错误。因为要去掉最高分和最低分,需要排序,而程序没有相关代码。
B.内层循环和外层循环之间的三行代码也就是max_score = 0 开始的三行代码应该移动到外层循环外。
C. if now_score > max_score 和if now_score < min_score 中的> 和 <分别调整为 >=和 <=不影响程序执行结果。
D. total_score += now_score 不可以更改为total_score = total_score + now_score 。
【答案】C
【考纲知识点】多层循环结构
【解析】逐个分析选项
A:求最大值和最小值可以使用擂台法,不一定需要排序,A选项错误
B:外层循环遍历的是参赛选手,每个选手的得分都需要重新统计,如果移到外层循环外会累加所有选手的数据,B选项错误
C:max_score和min_score求解最大值或最小值可以用if语句或三目运算符实现,C选项正确
D:+=是复合赋值运算符,total_score += now_score 等价于total_score = total_score + now_score,D选项错误
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
答案 | × | × | √ | × | √ | √ | √ | × | √ | × |
第 1 题 鸿蒙是华为公司开发的一款操作系统,那么它能够将正确的源程序翻译成目标程序,并运行。( )
【答案】错误
【考纲知识点】计算机基础
【解析】
操作系统(如鸿蒙)的主要功能是管理计算机的硬件与软件资源,并为用户和应用程序提供接口。将源程序翻译成目标程序(机器语言)是编译程序(编译器)或解释程序的功能,而非操作系统的直接功能。因此该说法错误。
第2 题 Python表达式5 < 10 and 20 的值为True 。( )
【答案】错误
【考纲知识点】基本运算符
【解析】
在Python 中,and运算符会返回第一个 假值,如果没有假值,则返回最后一个值。
在这个表达式中:5 < 10 的结果是True。and会继续检查下一个值,即20。
在Python 中,20是一个非零整数,属于真值,但它不返回True,而是直接返回20。
第 3 题Python表达式10 ** 0.5 == 10 ** 1 / 2 的值为False 。( )
【答案】正确
【考纲知识点】基本运算符
【解析】
左边部分计算10 ** 0.5 是求10的平方根,其值为:sqrt(10) = 3.162277660168379这是一个浮点数。
右边部分计算,按表达式的优先级,10 ** 1 先计算,结果为10。然后执行除法10 / 2,结果为5.0。
最后比较:左边的结果不等于右边的结果所以是False。说法正确
第4 题 下面Python代码执行时如果输入整数(包括负整数、0 和正整数),其输出都将是0 。 ( )

【答案】错误
【考纲知识点】循环结构
【解析】
1输入0,while条件不成立,输出N为0
2输入正整数,假设N为12,那么循环中N的位数不断减少,直至为0,输出N为0
3输入负整数,假设N = -1此时 N = -1,不为 0,进入循环。在Python 中,//是整除,向负无穷方向取整。-1 // 10 的结果是 -1(因为-1 / 10 = -0.1,向负无穷取整得到-1)。循环继续,N仍然是 -1,while N: 仍然为真(-1 != 0),继续循环。再次执行N //= 10,还是得到-1。这会导致 无限循环,永远不会退出。
此说法错误。
第5 题 下面的Python代码执行后,其输出是4 False 。( )

【答案】正确
【考纲知识点】顺序结构、基本运算符
【解析】
第1行a先赋值为4,第2行a == 5 的意思是判断 a和 5 是否相等。当前a 的值是4,所以比较结果是False。将False 赋值给变量b。输出 a和 b 的值:4 False。
这里需要注意在Python 中:当直接输出布尔值时,Python会以布尔型的符号 (True或 False)表示,而不会自动转换为1 或 0。
此说法正确
第6 题 下面Python代码执行后将输出5 。( )

【答案】正确
【考纲知识点】循环结构
【解析】
continue后没有任何语句,循环中i每次增加1,共循环5次,所以输出i为5,说法正确
第7 题 下面的Python代码可以用于判断正整数N的位数(即几位数,如123 是 3位数, 12 为2 位数)。( )

【答案】正确
【考纲知识点】循环结构、分支结构
【解析】
变量i用于记录位数,循环中每次判断N%(10**i)==N即判断N<10i是否首次成立,如果成立说明N的位数为i,如果不成立,说明N 至少有 i+1位,于是 i++,继续循环
假设N = 12
i=1, 12 % 10**1 == 12 不成立(余数是2),继续
i=2, 12 % 10**2 == 12 成立 → 输出“12 是2 位数”,结束
此说法正确
第8 题 计算交叉加减的结果,形如 1-2+3-4+5-……。将下面Python代码中的Flag = -Flag 改为Flag -= Flag 效果相同。( )

【答案】错误
【考纲知识点】循环结构
【解析】
Flag=-Flag是取反操作,Flag初始为-1,第1次变为1,第2次变为-1,以此来实现符号交替,但如果修改为Flag-=Flag,等价与Flag=Flag-Flag,无论Flag为何值结果都为0,无法实现题目要求,因此说法错误
第9 题 下列Python代码执行后将输出55 。( )

【答案】正确
【考纲知识点】多层循环结构
【解析】
外层循环i从0变化到9,内层循环j从i变化到9
当i=0时,j从0到9,共执行10次
当i=1时,j从1到9,共执行9次
……
当i=9时,j从9到9,共执行1次
总执行次数cnt=10+9+8……+1=55,此说法正确
第10 题 下面Python代码执行后输出如下,因为代码print() 的括号中没有任何内容,删除不影响输出效果。( )

【答案】错误
【考纲知识点】多层循环结构
【解析】print()默认将产生换行,不管有无参数。如果有end参数,则根据end参数确定每次输出时的行为,则每次print()后,紧接着end设定的参数,此说法错误
题号 | 1 | 2 |
答案 |
3.1编程题1
试题名称:环保能量球
时间限制:1.0 s
内存限制:512.0 MB
3.1.1题目描述
小杨最近在玩一个环保主题的游戏。在游戏中,小杨每行走1 公里就可以获得1 点“环保能量”。
为了激励玩家,游戏设置了“里程奖励”:小杨每行走x公里,游戏就会额外奖励1 点能量。
现在已知小杨总共行走了n公里,请你帮他计算,他一共能获得多少点环保能量?
3.1.2输入格式
第一行包含一个正整数t,代表测试数据组数。
对于每组测试数据:
第一行包含一个正整数n,代表行走的公里数。
第二行包含一个正整数x,代表奖励触发的间隔。
3.1.3输出格式
对于每组测试数据,输出一个整数,代表小杨获得的环保能量总数。
3.1.4样例
3.1.4.1输入样例

3.1.4.2 输出样例

3.1.4.3 样例解释
·对于第1 组数据,n=5,x=2:小杨行走获得 5点能量。此外,他在第2 公里和第 4公里时各获得 1点额外奖励,总共5+2=7点。
·对于第2 组数据,n=10,x=3:行走获得10 点。他在第3、6、9公里时各获得 1点额外奖励,总共10+3=13点。
·对于第3 组数据,n=2,x=5:行走获得 2点。由于行走路程不足5 公里,没有额外奖励,总共2 点。
3.1.5 数据范围
对于全部数据,保证:1≤t≤100,1≤n,x≤1000。
3.1.6 参考程序
【考纲知识点】多层循环结构、基本运算、输入输出语句
【解题思路】
方法一:有2种情况,一种是基础能量即每公里数,另一种是奖励能量即每走x公里奖励1点,可以循环公里数,每达到x公里就累加能量,注意变量的初始化位置
方法二:总能量=n+n//x
【程序解析】
通过input()读入数据、并通过int()将line_count转成int类型,循环line_count次表示line_count组数据,循环内按相同的方式处理每次输入的n和x,用ans变量记录基础能量为n公里数,用add_point变量记录奖励能量,其值为n//x,因为python中//本身就是向下取整,所以不需要其他操作,最后输出基础能量+奖励能量,python中print输出时默认是换行
【参考程序】

3.2
编程题2
试题名称:黄金格
时间限制:1.0 s
内存限制:512.0 MB
3.2.1题目描述
小杨在探险时发现了一张神奇的矩形地图,地图有H行和 W列。每个格子的坐标是( r,c),其中r表示行号从1到H,c表示列号 1到W。
小杨听说地图中隐藏着一些“黄金格”,这些格子满足一个神秘的数学挑战:当格子坐标(r,c)代入特定的不等式关系成立时,该格子就是黄金格。具体来说,黄金格的条件是:
。
例如,如果参数x=5,那么格子(4,3)就是黄金格。因为左边坐标平方和的平方根
算出来是5,而右边5+4-3算出来是6, 5小于等于6,符合条件。
3.2.2输入格式
三行,每行一个正整数,分别表示H,W,x。含义如题面所示。
3.2.3输出格式
一行一个整数,代表黄金格数量。
3.2.4样例
3.2.4.1输入样例

3.2.4.2输出样例

3.2.4.3样例解释

图中标注为黄色的四个格子是黄金格,坐标分别为(1,1),(2,1),(3,1),(4,1)。
3.2.5数据范围
对于所有测试点,保证给出的正整数不超过1000。
3.2.6
【考纲知识点】多层循环结构、基本运算、输入输出语句
【解题思路】
双重循环遍历行h和列w,枚举所有格子坐标(r,c),逐个判断是否满足黄金格的条件
,如果满足条件则进行计数,最后输出计数结果即可
【程序解析】
根据题目要求通过input()输入H,W,x,并通过int()转为整型,用ans变量记录满足条件的(r,c)数量,初始为0,双重循环遍历行H和列W,判断是否满足黄金格的条件即(r*r+c*c)**0.5<=x+r-c,满足条件则ans变量增加1,表示多了1组满足条件的(r,c)数量,双重循环结束后,输出ans的值

策划:GESP技术委员会副主席 刘晓庆
技术支持:韩丹


GESP2026年3月认证正在火热报名中,报名将于3月5日24点截止;点击登录CCF GESP网站(https://gesp.ccf.org.cn/)进行报名,欢迎学有余力的同学参加认证!


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