点击上方蓝字·关注我们



CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为青少年计算机和编程学习者提供学业能力验证的平台。GESP旨在提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。
GESP考察语言为图形化编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。
本次为大家带来的是2025年9月Python二级认证真题解析。
Python二级
2025年09月
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
答案 | D | C | C | D | D | A | A | D | B | D | A | D | C | A | A |
第 1 题 人工智能现在非常火,小杨就想多了解一下,其中就经常听人提到“大模型”。那么请问这里说的“大模型”最贴切是指( )。
A. 大电脑模型
B. 大规模智能
C. 智能的单位
D. 大语言模型
【答案】D
【考纲知识点】计算机基础
【解析】在人工智能领域,“大模型”通常指“大语言模型”(Large Language Model, LLM),是基于海量数据训练、参数量非常大的AI 模型,如ChatGPT。A、B、C选项均不专业或表达不准确,正确答案是D。
第 2 题 在TCP协议中,完成连接建立需要通过( )握手。
A. 一次
B. 二次
C. 三次
D. 四次
【答案】C
【考纲知识点】计算机网络
【解析】可以把TCP三次握手想象成两个人打电话确认通话:
① 客户端说:“喂,你能听到吗?”(SYN)
② 服务器回:“能听到,你能听到我吗?”(SYN+ACK)
③ 客户端回应:“能听到,我们开始吧。”(ACK)
这样双方都确认了“能发”和“能收”,连接才正式建立。
第 3 题 下面的Python代码用于输入姓名,然后输出姓名,正确的说法是( )。

A. XingMing是汉语拼音,不能作为变量名称
B. 可以将 XingMing改为 Xing Ming
C. 可以将 XingMing改为 xingming
D. 可以将 XingMing改为 Xing-Ming
【答案】C
【考纲知识点】变量的定义与使用
【解析】Python变量名可以使用字母、数字、下划线,但不能包含空格或减号,也不能以数字开头。
A:汉语拼音是普通字母组成,合法;
B:含空格非法;
C:纯字母,合法;
D:含“-”减号非法(会被当作减法运算符)。正确答案为C。
第 4 题 下面Python代码用于获得正整数N的第M位数,如N等于1234,M等于2,则输出3。此题假设M的值大于等于1小于等于N的位数。横线处应填入的代码是( )。

A. N % div // 10
B. N // div // 10
C. N % div % 10
D. N // div % 10
【答案】D
【考纲知识点】基本运算(算术运算)、数据类型的转换
【解析】要取从右往左数的第M 位:先用// div 去掉右边M-1 位,再用% 10 取当前个位。
A:N % div // 10 会得到错误的位;
B:// 10 会多去一位;
C:两次% 无法得到目标位;
D:逻辑正确,先整除再取余,答案为D。
第 5 题 下面Python代码执行,其输出是( )。

A. False 4 4
B. 3 3 3
C. 4 4 4
D. 3 4 False
【答案】D
【考纲知识点】基本数据类型(布尔型)、基本运算(关系运算)
【解析】a, b = 3, 4 将 a赋值为3,b赋值为4;c = a == b 比较3与4是否相等,结果为False(布尔类型)。print(a, b, c) 会依次输出 3 4 False。正确答案为 D。
第 6 题 某种编号的规则是“XX-Y”,其中XX从00到11,Y从0到9,X和Y均为10进制。第一个编号是00-0,第二个编号是01-1,第12个编号11-1,第13个编号00-2,即其编码规则是XX和Y同时增1,到XX到11时下一个变为00,Y到9时,下一个变为0。下面的Python代码用于生成第N个编号,横线处应填上的代码是( )。

A. 12 10
B. 10 10
C. 11 9
D. 9 9
【答案】A
【考纲知识点】基本运算(算术运算)、输入输出语句
【解析】题意为编号规则:前两位XX 有 00~11共 12 种,后一位Y 有 0~9共 10 种,且XX 和 Y同时递增。根据 N求第 N 个编号:
part1 = N % 12 表示XX 在 0~11循环;
part2 = N % 10 表示Y 在 0~9循环。
因此填入12 和 10,答案为A。
第 7 题 下面的Python代码执行后,将输出( )。
A. -2#-1#1#
【答案】A
【考纲知识点】控制语句结构(顺序、循环、选择)
【解析】range(-2, 2) 生成序列 -2, -1, 0, 1;if i:在Python中0 被视为False,其他整数为True,因此会跳过0。循环输出-2、-1、1,并用# 连接,结果为-2#-1#1#。正确答案是A。
第 8 题 下面的Python代码执行后其输出是( )。
A. 145
B. 125
C. 55
D. 45
【答案】D
【考纲知识点】多层分支/循环结构
【解析】外层i从-10到9,内层j在range(i)中,若i≤0则内层循环不执行;当i=1到9时,内层循环次数为i次,总次数为1+2+…+9=45,输出45,对应选项D。
第 9 题 下面Python代码执行后其输出是( )。
A. 99
B. 11
C. 0
D. 没有输出
【答案】B
【考纲知识点】多层分支/循环结构
【解析】外层for从1到11,只取奇数i;内层for j从0到i-1,遇到i*j为奇数时break。因此当i是奇数,j=1时i*1为奇数立即break。外层循环没有break,所以执行完所有i值后,进入外层的else,i=11,j在最后一次循环中为1,输出i*j=11。正确答案为B。
第 10 题 阅读下面的Python代码,正确的是( )。
A. b 不能为 0,因为a % b 将导致错误
B. a 必须小于 b,否则a % b 将导致错误
C. a 和 b都必须为正整数,否则a % b 将导致错误
D. 如果 a为0,则不管b 为多少,输出都将是b
【答案】D
【考纲知识点】控制语句结构(顺序、循环、选择)、辗转相除法(欧几里得算法)
【解析】本题代码实现的是求两数的最大公约数(GCD)的辗转相除法。
A 错:在while 中已确保b ≠ 0 时才执行a % b,不会报错。
B 错:a可以大于或小于b,取余运算不受此限制。
C 错:Python的 %运算支持负数与零(除数非零),不要求正整数。
D 对:若a=0,则第一次循环remainder=0,a被赋值为b,b变为0,循环结束,输出b原值。
第 11 题 下面Python代码执行后输出是( )。
【答案】A
【考纲知识点】控制语句结构(顺序、循环、选择)
【解析】代码中while循环从num=0开始,每次num += 1,当num == 3时跳过打印(continue),其他情况输出num并以#结尾。循环直到num > 5结束,输出序列为1#2#4#5#6#,故选A。
第 12 题 下面Python代码用于记录多个输入数中的最大数和最小数(输入-999 则输入结束),相关说法错误的是( )。
A.程序运行时如果第一个数输入-999,则输出将是-999 -999
B. 程序输入过程中,如果输入的第一个数不是-999,且如果待输入的实际数据中没有-999【即:-999仅作为结束程序的标志数据】,则程序能求出最大数和最小数
C. 如果用于输入考试成绩,即成绩中不可能有-999,则程序能求出最高成绩和最低成绩
D. 可以将now_num = int(input())移动到while now_num != -999:之后
【答案】D
【考纲知识点】控制语句结构(顺序、循环、选择)
【解析】选项D错误,因为now_num必须在进入while前先有初始值,否则循环条件无法判断。A正确,若首个输入-999则直接输出-999 -999;B和C正确,本程序可正确求最大最小且-999仅作结束标志。
第 13 题 下面Python代码执行后输出与5 有关数的数量。与5有关的数定义为含有5 或者能被 5整除的数。相关说法正确的是()。
A.删除代码中 continue不影响程序执行结果
B. 删除代码中 break不影响程序执行结果
C. 删除j = i并将while 循环的j修改为i,不影响程序执行结果
D. 将while j > 0修正为while j>= 0不影响程序执行的结果
【答案】C
【考纲知识点】控制语句结构(顺序、循环、选择)
【解析】代码统计含“5”或能被5整除的数。
A:删除continue 会使能被5整除的数还会进入while判断,结果增加,错误。
B:删除break 会重复计数某数多次,错误。
C:j=i是将数字副本用于逐位判断,直接用i 同样有效,正确。
D:j>=0会导致当 j=0时进入死循环,错误。
第 14 题 下面Python代码实现输出如下图形,应该在横线处填入的代码是( )【注:字符串乘以一个正整数,相当于相同字符重复】。
A. (n % 2 == 1 and i == mid_row) or (n % 2 == 0 and (i == mid_row - 1 or i == mid_row))
B. (n % 2 == 0 and i == mid_row) or (n % 2 == 1 and (i == mid_row - 1 or i == mid_row))
C. (n % 2 == 1 and i == mid_row) or (n % 2 == 0 and (i == mid_row or i == mid_row + 1))
D. (n % 2 == 1 and i == mid_row) or (n % 2 == 0 and i == mid_row - 1) or (n % 2 == 0 and i == mid_row)
【答案】A
【考纲知识点】控制语句结构(顺序、循环、选择)
【解析】题目要求补全代码,i的范围为0~n-1,实现判断当前行是否为中间行mid_row(n为奇数),或中间两行mid_row-1与mid_row(n为偶数),中间行或中间两行为全星号,选项A符合要求。
第 15 题 下面Python代码实现输出如下图形,应该在横线处填入的代码是( )。
A.
B.
C.
D.
【答案】A
【考纲知识点】控制语句结构(顺序、循环、选择)
【解析】
该程序打印空格形成金字塔左对齐效果,第1重循环控制层数,第2重循环打印空格数量应为N-i+1(逐层递减),第三重循环打印该行的数字个数。选项A的“i+1”能多打印一个数字保证图形中心对齐,因此A正确,其他选项空格或数字数量不符。
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
答案 | × | √ | × | √ | × | × | × | √ | × | √ |
第 1 题 在集成开发环境里调试程序时,要注意不能修改源程序,因为如果修改,就要终止调试、关闭该文件并重新打开,才能再次开始调试。( )
【答案】错
【考纲知识点】计算机基础与编程环境
【解析】现代集成开发环境(IDE)通常允许在调试过程中修改源代码并继续运行(称为热替换或即时编译),即使不支持此功能,也无需关闭文件重新打开,只需重新编译并运行即可,因此题目说法错误。
第 2 题 在Python代码中,假设N为正整数且大于100,则N // 100将舍弃个位和十位,如N为1234则print(N // 100)将输出12。如果N小于100且大于0,则其值为0。( )
【答案】对
【考纲知识点】基本运算(算术运算)
【解析】
// 是整除运算符,会返回商的整数部分。对于N=1234,1234 // 100 = 12,个位和十位被舍弃。当0 < N < 100 时,N小于除数 100,整除结果为0,因此题干描述正确。
第 3 题 下列Python代码执行后将输出True,因为 a确实小于 20和 10。( )
【答案】错
【考纲知识点】基本运算(算术运算、关系运算、逻辑运算)
【解析】Python中 and是逻辑运算符,会返回第一个为False 的值或最后一个值。表达式a < 10 为True,继续返回20(非布尔值),最终输出20 而非True,因此题目说法错误。
第 4 题 下面的Python执行后将输出True。( )
【答案】对
【考纲知识点】基本运算(算术运算、关系运算、逻辑运算)
【解析】Python支持链式比较运算 x < y < z,等价于 (x < y) and (y < z)。本例中5 < 10 且 10 < 15,两个条件均为True,所以result 为True,最终输出True,题目说法正确。
第 5 题 下面Python执行后,将输出10。 ( )
【答案】错
【考纲知识点】基本运算(算术运算、关系运算、逻辑运算)
【解析】在Python 中,布尔类型是int 的子类,True的值为 1,False的值为 0。因此a + True 等价于10 + 1 = 11,输出结果为11 而不是10,所以题目说法错误。
第 6 题 下面Python代码执行时如输入99.99,将输出及格两个汉字。( )
【答案】错
【考纲知识点】数据类型的转换
【解析】输入99.99 时,int()会将字符串 "99.99"转换为整数,但因为该字符串包含小数点,直接转换会引发ValueError 异常,程序无法正常输出“及格”,因此题目说法错误。
第 7 题 下面Python代码执行时将导致无限循环(也称死循环)。( )
【答案】错
【考纲知识点】控制语句结构(顺序、循环、选择)
【解析】while循环在count<5时运行,每轮count递增1,即使count==3时continue跳过打印,也不会阻止count增长,条件最终不满足而循环结束。因此不会形成无限循环,答案为“错”。
第 8 题 下面的Python代码执行后将输出+#+#2#。( )
【答案】对
【考纲知识点】控制语句结构(顺序、循环、选择)
【解析】continue仅跳过本次循环剩余语句,不会阻止count 增加。循环每次都会执行count += 1,最终当count 增加到5 时循环结束,因此不存在无限循环,题目说法错误。
第 9 题 下列Python代码用于求斐波那契数列,即第1个数0,第2个数1,从第三个数开始,是前两个数之和。如果输入的值为大于1的正整数,该代码能输出第N个数的值。( )
【答案】错
【考纲知识点】算法:递推
【解析】该代码会从第1 项开始依次输出斐波那契数列的前n 项,而不是只输出第n 项的值。如果输入n=5,则输出0 1 1 2 3。因此题中“能输出第N 个数的值”的说法错误。
第 10 题 下面的Python不能实现如下输出,但如果将print(0, end='')与if对齐,则可以。( )
【答案】对
【考纲知识点】控制语句结构(顺序、循环、选择)
【解析】原代码中print(0, end='') 被放在continue 语句后,永远不会执行;如果将它与if 对齐,就能在不满足i == j 条件时输出0,从而实现预期的矩阵输出,因此题目说法正确。
题号 | 1 | 2 |
答案 |
3.1编程题1
试题名称:优美的数字
时间限制:1.0 s
内存限制:512.0 MB
3.1.1 题目描述
如果一个正整数在十进制下的所有数位都相同,小A 就会觉得这个正整数很优美。例如,正整数6的数位都是6,所以6是优美的。正整数99的数位都是
,所以99是优美的。正整数123的数位不都相同,所以123并不优美。
小 A 想知道不超过
的正整数中有多少优美的数字。你能帮他数一数吗?
3.1.2 输入格式
一行,一个正整数n。
3.1.3 输出格式
一行,一个正整数,表示不超过n的优美正整数的数量。
3.1.4 样例
3.1.4.1 输入样例1
3.1.4.2 输出样例1
3.1.4.3 输入样例2
3.1.4.4 输出样例2
3.1.5 数据范围
对于所有测试点,保证1≤n ≤2025。
3.1.6 参考程序
【考纲知识点】控制语句结构(顺序、循环、选择)
【解析】题目要求统计所有数位相同的“优美数”。核心思路是遍历1到n逐个检查其每一位是否与个位相同。使用循环提取每一位并比较,不符合立即退出。本题考查循环和条件判断的综合应用,以及简单的整除与取余运算。

3.2 编程题 2
试题名称:菱形
时间限制:1.0 s
内存限制:512.0 MB
3.2.1 题目描述
小 A想绘制一个菱形。具体来说,需要绘制的菱形是一个n行n列的字符画,n是一个大于
的奇数。菱形的四个顶点依次位于第1行、第1列、第n行、第n列的正中间,使用# 绘制。相邻顶点之间也用# 连接。其余位置都是.。例如,一个5行5列的菱形字符画是这样的:

给定n,请你帮小A 绘制对应的菱形。
3.2.2 输入格式
一行,一个正整数n。
1.3.2.3 输出格式
输出共 n行,表示对应的菱形。
3.2.4 样例
3.2.4.1 输入样例1
3.2.4.2 输出样例1
3.2.4.3 输入样例2
3.2.4.4 输出样例2
3.2.5 数据范围
对于所有测试点,保证3≤ n≤ 29并且n为奇数。
3.2.6 参考程序
【考纲知识点】控制语句结构(顺序、循环、选择)
【解析】本题利用双重循环遍历二维字符画的行列坐标,根据坐标关系判断是否位于菱形的四条边,输出对应的字符。条件判断是核心,分别对应菱形的四条边的数学方程,其他位置输出。

策划:GESP技术委员会副主席 刘晓庆
技术支持:GESP技术委员会委员 宋旭彤


GESP2025年12月认证正在火热报名中,报名将于12月17日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公众号了解更多资讯
