点击上方蓝字·关注我们



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 | A | C | B | D | C | C | A | C | D | A | B | D |
第1 题 人工智能现在非常火,小杨就想多了解一下,其中就经常听人提到“大模型”。那么请问这里说的“大模型”最贴切是指( )。
A.大电脑模型
B.大规模智能
C.智能的单位
D.大语言模型
【答案】D
【考纲知识点】计算机历史
【解析】“大模型”在近年的人工智能领域通常是指大语言模型(Large Language Model,LLM),例如GPT 系列、BERT等。这类模型具有巨大的参数量(可达千亿级别),在海量文本数据上训练,能够完成文本生成、对话、翻译等多种自然语言处理任务。
第2 题 小杨这学期刚开学就选修了一门编程课,然后就想编写程序来计算1到10001之间的所有偶数的和。他希望程序采用简单累加整数的方法,同时希望源程序尽可能清晰、简洁,则下面关于实现累加时采用的主要控制结构的哪个说法最不合适( )。
A.使用循环结构
B.使用循环和分支的组合
C.仅使用顺序结构
D.不使用分支结构
【答案】C
【考纲知识点】控制语句结构
【解析】题目要求计算1 到 10001之间的所有偶数的和。
A 使用循环结构:合适,可以循环遍历每个数。
B 使用循环和分支的组合:合适,在循环内用分支判断是否为偶数再累加。
C 仅使用顺序结构:不合适,因为顺序结构只能逐条执行固定步骤,而这里有10001 个数,不可能写10001 行判断与累加代码。
D 不使用分支结构:合适,例如循环步长为2,从 2开始直接累加偶数,无需分支判断。
综上所述,选C
第3 题 下面的Python代码用于输入姓名,然后输出姓名,正确的说法是( )。

A. XingMing 是汉语拼音,不能作为变量名称
B.可以将 XingMing改为 Xing Ming
C.可以将 XingMing改为 xingming
D.可以将 XingMing改为 Xing-Ming
【答案】C
【考纲知识点】变量的定义与使用
【解析】python变量命名规则:
1、只能包含字母、数字、下划线。
2、不能以数字开头。
3、区分大小写。
选项分析:
A 汉语拼音可以作为变量名,只要符合命名规则。
B “Xing Ming”中间有空格,不合法。
C “xingming”全部小写,合法,只是与原来大小写不同。
D “Xing-Ming”含减号,不合法。
因此正确的说法是C。
第4 题 下列Python代码执行后,其输出是( )。

A. 2.6 2 3
B. 2.623
C. 2 2 3
D. 2 3 4
【答案】A
【考纲知识点】算术运算
【解析】/返回浮点数结果。//返回整数结果(取商的整数部分)。%返回余数。
a / b = 2.6。a // b = 2。a % b = 3。在 Python中,当使用 print()同时输出多个值时,默认情况下值之间会用一个空格分隔,所以选A
第5 题 Python表达式3 * 3 ** 3 // 3 的值是( )。
A. 243
B. 81
C. 27
D. 9
【答案】C
【考纲知识点】算术运算
【解析】//表示整除,**表示幂运算优先级在该表达式中最高,先算3**3=27,再算3 * 27 = 81 ,再算 81 // 3 = 27
第6 题 下面的Python代码执行时如果先输入10 回车后输入20 并回车,其输出是( )。

A. 30
B. 1020
C. {N+M}
D. N+M
【答案】B
【考纲知识点】输入输出语句
【解析】input()函数会将用户输入的内容作为字符串处理。
用户输入10,变量 N的值为字符串 "10"。
用户输入20,变量 M的值为字符串 "20"。
在print(f"{N+M}") 语句中,N + M 的操作是字符串拼接,而不是数值相加。"10" + "20" 的结果是字符串"1020"。
第7 题 当前是9月,编写Python代码求N个月后的月份。横线处应填入的代码是( )。

A. N % 12
B. 9 + N % 12
C. (9 + N) // 12
D. (9 + N) % 12
【答案】D
【考纲知识点】算术运算、分支结构
【解析】总月份数为9 + N,需映射到1-12范围,用(9 + N) % 12:
若结果为0,对应12 月(如9+3=12,12%12=0→12月);
若结果非0,直接为目标月份(如9+4=13,13%12=1→1月)。
第8 题 下面Python代码执行后的输出是( )。

A. 5050
B. 4950
C. 50
D. 49
【答案】C
【考纲知识点】循环结构
【解析】i % 2的结果:i为偶数时,i%2=0(如i=0,2,4...);i为奇数时,i%2=1(如i=1,3,5...)。
循环范围i=0~99,共100 个数,其中奇数有50 个(1,3,5,...,99),累加结果n = 50。
第9 题 下面的Python代码执行后输出是( )。

A. 90
B. 100
C. 900
D. 1000
【答案】C
【考纲知识点】循环结构
【解析】i从 -100 到99 遍历,i % 10 取每个数的个位数字(Python的取余运算规则是余数始终与除数同符号)。余数为0, 1, 2, ..., 9,循环20 次。(0 + 1 + 2 + ... + 9) * 20=900,选C。
第10 题 下面Python代码执行后输出是( )。

A. 1#2#
C. 1#2
【答案】A
【考纲知识点】循环结构、分支结构
【解析】在python 中,for … else 表示这样的意思,for中的语句和普通的没有区别,else中的语句会在循环正常执行完(即for 不是通过break 跳出而中断的)的情况下执行;print()函数有一个可选参数end,它用于指定打印结束后应该输出什么,代替默认的换行符\n。默认情况下,end="\n",表示输出后换行。如果将end 设置为其他字符串,例如end="#",那么打印后不会换行,而是输出#。
i=1、i=2时,if条件不成立,输出1#、2#;
i=3 时,if条件成立执行break 终止循环;
由于for是break跳出的,所以不输出END。最终输出1#2# 选 A。
第11 题 下面的Python代码用于求N的镜面数(N的个位到最高位的各位数字依次反过来出现在数字中,但高位0将被忽略,不输出),如输入1234 ,则将输出4321,又如输入 120,则将输出21,错误的选项是( )。

A. N != 0
B. not (N == 0)
C. N = 0
D. N > 0
【答案】C
【考纲知识点】循环结构
【解析】求镜面数的循环需持续处理N 的每一位,直到N 为 0。
选项A、B、D均表示 “N不为 0”,符合循环逻辑
选项 C是赋值语句不是条件,逻辑错误。选C
第12 题 下面Python代码用于交换两个正整数,其不能实现的代码是( )。
A.

B.

C.

D.

【答案】D
【考纲知识点】顺序结构
【解析】选项D 中 a = b:将 a 赋值为b,此时 a和 b 的值变成一样的。
b = a:由于a 和 b的值已经相同,这一步不会改变b 的值。所以D错误
B选项中:Python会先计算等号右边的表达式,即(b, a),生成一个包含两个元素的元组。然后,Python将元组中的第一个值(b)赋给变量a,将元组中的第二个值(a)赋给变量b。这样,两个变量的值就完成了交换,原来a 的值变成了b 的值,而 b的值变成了 a的值。
第13 题 有关下面Python代码说法正确的是( )。

A.代码执行后,海龟会水平向右画一条100像素的直线
B.因为在turtle.forward(100)之前没有执行turtle.pendown() ,因此只会水平向右移动100像素,但不会绘制直线
C.因为在turtle.forward(100)之前没有执行turtle.pensize(n) ,其中n为正整数,因此只会水平向右移动100像素,但不会绘制直线
D.因为在turtle.forward(100)之前没有执行turtle.pencolor(color) ,color为合法的颜色值,因此只会水平向右移动100像素,但不会绘制直线或者说绘制了直线,但与背景颜色保持一致,看不出是直线
【答案】A
【考纲知识点】turtle绘图
【解析】
A选项:默认情况下,海龟的画笔是处于绘制状态的(即turtle.pendown() 的默认状态)。执行turtle.forward(100) 后,海龟会水平向右移动100 像素,同时绘制一条100 像素长的直线。
B选项:turtle.pendown()的作用是让海龟的笔处于绘制状态。但是,海龟的画笔在默认情况下已经是绘制状态,不需要显式调用turtle.pendown()。所以这选项的说法是错误的。
C选项:turtle.pensize(n)的作用是设置线条的宽度,默认为1 像素。即使没有显式调用turtle.pensize(n),海龟的画笔仍然可以绘制线条,线条宽度为默认值1 像素。这选项的说法是错误的。
D选项:turtle.pencolor(color)的作用是设置画笔的颜色,默认颜色是黑色。即使没有显式调用turtle.pencolor(color),海龟的画笔仍然会绘制线条,线条颜色为默认值黑色,与背景白色形成对比,非常明显。所以这选项的说法是错误的。
最终答案A
第14 题 为在Python Turtle中输出如下图形,代码横线处应填入( )。

A. 15
B. 30
C. 45
D. 90
【答案】B
【考纲知识点】turtle绘图
【解析】
turtle.circle(100):绘制一个半径为100 的圆。
turtle.right(__):让海龟向右旋转一定角度,然后继续下一次循环绘制。旋转的角度决定了圆的分布方式。
for i in range(12):循环12 次,也就是说将绘制12 个圆。一个完整的圆周是360 度,所以每次旋转的角度应该是:360 ÷ 12 = 30 度,选B
第15 题 为在Python Turtle中输出如下图形,代码横线处应填入( )。

A. 1
B. 2
C. 3
D. 4
【答案】D
【考纲知识点】turtle绘图
【解析】turtle.circle()这个函数用于绘制圆形或多边形。
参数steps它指定绘制的形状由多少条线段构成:如果steps=None(默认值),绘制的是圆形。如果steps=n,绘制的是一个由n 条边组成的正多边形。
turtle.right(90)每次循环后,海龟会向右旋转90°,以便在下一个位置绘制新的形状。
for i in range(4) 循环 4次,意味着总共会绘制4 个形状,即图中4 个正方形,因此,steps=4可以正确绘制正方形
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
答案 | × | × | × | × | √ | × | × | × | √ | × |
第1 题 在集成开发环境里调试程序时,要注意不能修改源程序,因为如果修改,就要终止调试、关闭该文件并重新打开,才能再次开始调试。( )
【答案】错误
【考纲知识点】计算机基础与编程环境
【解析】在现代集成开发环境(IDE)中,调试期间修改源代码后,通常IDE 会提示源代码已更改,并询问是否重新编译并继续调试,或者停止调试。
有些IDE(如 Visual Studio、Code::Blocks、Xcode等)支持“编辑并继续”(Edit and Continue)功能,允许在调试时修改代码并立即应用,无需完全终止调试会话。
即使不支持该功能,也只需重新编译并再次启动调试,不必“关闭文件再重新打开”。
因此题目说法不准确。
第2 题 执行Python表达式10 ** 0.5 将报错,因为 0.5所在位置只能是正整数。( )
【答案】错误
【考纲知识点】算术运算
【解析】在Python 中,**是用来表示幂运算的操作符,10 ** 0.5 的意思是计算 10的 0.5次幂,Python完全支持浮点数作为指数,因此这表达式不会报错
第3 题 下面Python代码执行后将输出9 。 ( )

【答案】错误
【考纲知识点】循环结构
【解析】for循环进入后立即执行break,直接跳出循环,此时i 仍为初始值0,输出 0而非 9。说法错误。
第4 题 下面Python代码执行后将输出55 。( )

【答案】错误
【考纲知识点】循环结构
【解析】在代码中,range(-10)是一个无效的范围,因为range 的默认方向是从左往右增加,而-10 是单独的负数,没有起点和终点定义,因此无法生成有效的范围,让range() 生成一个从-10 到 -1的数字序列,可以将代码修改为range(-10, 0)
第5 题 将下面Python代码中的range(100) 修改为range(1,100) ,其输出与当前代码输出相同。( )

【答案】正确
【考纲知识点】循环结构
【解析】原代码累加0~99,修改为i=1 后累加1~99,但 0不影响总和(总和仍为4950),输出相同。说法正确。
第6 题 将下面Python代码中的i < 10 修改为i <= 10 ,其执行后输出相同。( )

【答案】错误
【考纲知识点】循环结构
【解析】原条件i < 10 累加0~9(和为45),改为 i <= 10 累加 0~10(和为55),输出不同。说法错误。
第7 题 下面的Python代码执行后将输出45 。( )

【答案】错误
【考纲知识点】循环结构
【解析】循环先i += 1 再 n += i,i 取1~10,累加和为55(非45)。说法错误。
第8 题 执行下面的Python代码后,将输出30 。( )

【答案】错误
【考纲知识点】输入输出语句
【解析】print(f"{N}+{M}") 这是一个f-string(格式化字符串),会将{N} 和 {M}替换为 N 和M 的值。输出结果为字符串"10+20",而不是将两者相加得到数值结果。
第9 题 下面的Python代码执行后,海龟指向不会发生变化。( )

【答案】正确
【考纲知识点】turtle绘图
【解析】每次循环,海龟都会向右转30°,12次循环后,海龟总共会向右转动30 × 12 = 360°,海龟会回到原来的方向。因此,虽然海龟在每次循环中都会改变方向,但执行完所有循环后,海龟的最终指向不会发生变化,仍然指向初始方向。
第10 题 下面的Python代码执行后将能绘制出大于3的正多边形。( )

【答案】错误
【考纲知识点】turtle绘图
【解析】这里的转动角度写成了360 % N,但实际上这是不正确的,应该写成360 / N,因为正多边形的每个内角是由总周角(360°)除以边数N 得到的。
题号 | 1 | 2 |
答案 |
3.1编程题1
试题名称:商店折扣
时间限制:1.0 s
内存限制:512.0 MB
3.1.1题目描述
商店正在开展促销活动,给出了两种方案的折扣优惠。第一种方案是购物满x元减y元;第二种方案是直接打n折,也就是说价格变为原先的n/10。这里的x,y,n均是正整数,并且1≤y<x,1≤n<10。
需要注意的是,第一种方案中满减优惠只能使用一次。例如购物满10元减3元时,若挑选了价格总和为33元的物品,只能减免3元,需要支付30元。
小明在商店挑选了价格总和为p元的物品,结账时只能使用一种优惠方案。小明最少需要支付多少钱呢?
3.1.2输入格式
四行,四个正整数x,y,n,p,含义见题目。
3.1.3输出格式
一行,一个小数,表示小明最少需要支付多少钱,保留两位小数。
3.1.4样例
3.1.4.1输入样例1

3.1.4.2 输出样例1

3.1.4.3输入样例1
3.1.4.4 输出样例1

3.1.5 数据范围
对于所有测试点,保证1≤y<x≤100,1≤n<10,1≤p≤100。
3.1.6
【考纲知识点】分支结构、基本运算、输入输出语句
【解题思路】
满减方案(方案一):当购物总金额p 大于等于满减门槛x 时,可减免y 元;若 p小于 x,则无法使用满减,需支付原价p。
折扣方案(方案二):直接按原价的n/10 计算最终支付金额(例如n=9 对应 9折,即原价的 90%)。 比较两种方案的结果,取较小值,并按要求保留两位小数输出。
【程序解析】按题目要求通过input读入x,y,n,p变量的值,注意input读入结果是字符串,需要通过int()转为整型,变量a1表示方案一优惠后的价格,变量a2表示方案二优惠后的价格,方案一:达到满减则p减去y元,否则为p元,方案二:取原价p的n/10,最后判断两种方案中哪种更便宜,输出时注意保留2位小数。
第一种保留小数的方法:%.2f是一个格式化占位符,用于表示将a1 以浮点数的形式显示,并保留小数点后2 位,% a1 表示a1的值会替换%.2f 中的占位符。
第二种保留小数的方法:{a1} 是一个占位符,表示插入变量a1 的值。
:.2f是格式化指令:冒号表示开始格式化。.2表示保留小数点后两位。f表示格式化为浮点数。
【参考程序】

3.2
编程题2
试题名称:金子塔
时间限制:1.0 s
内存限制:512.0 MB
3.2.1
题目描述
金字塔由n层石块垒成。从塔底向上,每层依次需要n×n,(n-1)×(n-1),...,2×2,1×1块石块。请问搭建金字塔总共需要多少块石块?
3.2.2输入格式
⼀行,⼀个正整数n,表示金子塔的层数。
3.2.3输出格式
⼀行,⼀个整数,表示搭建金子塔所需的石块数量。
3.2.4样例
3.2.4.1输入样例1

3.2.4.2输出样例1

3.2.4.3输入样例1

3.2.4.4输出样例1

3.2.5数据范围
对于所有测试点,保证1≤n≤ 50。
3.2.6
【考纲知识点】循环结构、基本运算、输入输出语句
【解题思路】
第 1层(最底层)需要 𝑛2块石块
第 2层需要 (𝑛−1)2块
...
第 𝑛层(顶层)需要 12块
所以总石块数就是:ans = n2+(n-1)2+(n-2)2+……+22+12
方法一:for循环遍历1~n,每次加上i*i即可
方法二:直接输出平方和求和公式:(n(n+1)(2n+1))/6
【程序解析】按题目要求通过input读入n变量的值,注意input读入结果是字符串,需要通过int()转为整型,ans变量表示总石块数,for循环遍历层数1~n,每层的石块数是当前层数的平方即i*i,ans累加每层的石块数,最后输出ans的值
【参考程序】

策划: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公众号了解更多资讯
