当前位置:首页>python>GESP第九次认证真题解析|Python二级真题回顾

GESP第九次认证真题解析|Python二级真题回顾

  • 2026-09-10 12:57:49
GESP第九次认证真题解析|Python二级真题回顾

点击上方蓝字·关注我们

CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为青少年计算机和编程学习者提供学业能力验证的平台。GESP覆盖中小学全学段,符合条件的青少年均可参加认证。GESP旨在提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。

GESP考察语言为图形化编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。

本次为大家带来的是2025年3月Python二级认证真题解析。

Python二级

2025年03⽉

1单选题(每题2分,共30分)

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

答案

D

C

B

A

A

D

A

D

A

C

B

D

C

D

B

第1题2025年春节有两件轰动全球的事件,一个是DeepSeek横空出世,另一个是贺岁片《哪吒2》票房惊人,入了全球票房榜。下面关于DeepSeek与《哪吒2》的描述成立的是( )。

A.《哪吒2》是一款新型操作系统

B. DeepSeek是深海钻探软件

C.《哪吒2》可以生成新的软件

D. DeepSeek可以根据《哪吒2》的场景生成剧情脚本

【答案】D【知识点】计算机基础【解析】DeepSeek是一款人工智能大模型,由中国团队自主研发,由于其低廉的训练成本,和非常高的性能,而震惊世界。《哪吒2》是一部动画电影,票房代表了我国动画领域自主研发的能力。那么对于以上说法正确的是D。

第2题 对整型变量N,如果它能够同时被3和5整出,则输出N是含有至少两个质因数。如果用流程图来描述处理过程,则输出语句应该在哪种图形框中( )。

A. 圆形框

B. 椭圆形框

C. 平行四边形框

D. 菱形框

【答案】C【知识点】流程图【解析】在流程图中,输入/输出操作使用平行四边形框表示,而不是其他形状。圆形用于链接符,菱形用于判断,椭圆用于开始/结束。

第3题Python语句print(3+3**(2-2)*3)执行后输出的值是( )。

A. 11

B. 6

C. 4

D. 3

【答案】B【知识点】Python运算符、运算优先级【解析】Python中**运算符优先级最高,其次是乘除,最后是加减。计算过程:先算2-2=0,再算3**0=1,然后1*3=3,最后3+3=6。

第4题 下面Python代码执行,其输出是(  )。

A. 3 4

B. 3 3

C. 4 4

D. 4 3

【答案】A【知识点】变量赋值【解析】Python中==是比较运算符,返回布尔值,不会改变变量值。代码中的比较操作不影响a和b的值,所以输出仍是初始赋值的3和4。

第5题 求三色彩球的颜色。有数量无限的红(Red)绿(Green)蓝(Blue)三种彩球排成一行,每组先为5个红色球,随后3个绿色,最后为2个蓝色。每个球都有编号,从左到右依次为1,2,3……。输入整数代表编号,求该编号球的颜色。下面是Python代码的实现,正确说法是(  )。

A. 将elif remainder == 9 or remainder == 0:修改为else效果相同

B. 将if 1 <= remainder <= 5:修改为if remainder <= 5:效果相同

C. elif 6 <= remainder <= 8:写法错误,应修改为elif 6 <= remainder and remainder <= 8:

D.根据题意remainder = N % 10应修改为remainder = N // 10

【答案】A【知识点】Python条件语句、取模运算【解析】代码使用%取余运算获取个位数,最后一个else分支等价于remainder == 9 or remainder == 0,因此可以直接用else替换,效果相同。选项B错误,因为将条件改为if remainder <= 5会导致remainder为0时也判断为红色球,与题意不符。

第6题 下面Python代码执行后其输出是(  )。

A. 18

B. 17

C. 16

D. 14

【答案】D【知识点】Python循环、取模运算【解析】当i能被3整除时,i % 3为0(False),执行else分支tnt加2;否则tnt加1。遍历0到9,能被3整除的数有0,3,6,9共4个,所以tnt = 4×2 + 6×1 = 14。

第7题 下面Python代码执行后输出是(  )。

A. 10

B. 8

C. 0

D.因为循环执行时会执行break语句而终止循环,因此i的值不确定

【答案】A【知识点】Python循环控制【解析】range(10,0,-2)生成序列10,8,6,4,2,但循环刚开始就遇到break语句立即退出。此时i的值仍保持为第一个值10,所以输出10。

第8题 下面Python代码执行后输出是( )。

A. 0#0#0#0#0#0#

B. 0#0#0#0#0#0#0#1#

C. 0#0#0#0#1#

D. 0#0#0#0#0#0#1#

【答案】D【知识点】Python循环、continue语句【解析】当i被3整除时,continue跳过打印语句;否则打印"0#"。0到9中不能被3整除的数有7个,最后执行else语句打印"1#",所以输出6个"0#"加"1#"。

第9题 下面Python代码执行后的输出是( )。

A. 1-2-1-3-2-1-4-3-2-1-

B. 1-2-1-3-2-1-4-3-2-1

C. 0-0-1-0-1-2-0-1-2-3-

D. 0-0-1-0-1-2-0-1-2-3

【答案】A【知识点】Python嵌套循环【解析】外层循环i从1到4,内层循环j从i递减到1。当i=2时输出2-1-,i=3时输出3-2-1-,i=4时输出4-3-2-1-,最终拼接得到1-2-1-3-2-1-4-3-2-1-。

第10题 下面Python代码执行后,将输出能被2整除且除以7余数为2的数。下列选项不能实现的是( )。

A. i % 2 == 0 and i % 7 == 2

B. not(i % 2) and i % 7 == 2

C. not(i % 2) and not(i % 7)

D. i % 2 != 1 and i % 7 == 2

【答案】C【知识点】逻辑运算【解析】not(i % 2)等价于i % 2 == 0表示能被2整除,但not(i % 7)表示能被7整除,与题目要求"除以7余2"不符。其他选项都正确表达了条件。

第11题 下面Python代码用于求正整数1到N之间含有3的数的个数,横线处应填入代码先后是( )。

A.  

B.  

C.  

D.  

【答案】B【知识点】循环控制【解析】当找到含3的数字时,应立即break跳出内层循环避免重复计数,同时使用整除运算i //= 10获取下一位数字。continue会导致死循环,取模运算会丢失高位数字。

第12题 下面Python代码用于实现九九乘法表,代码中{i*j}与等号之间有一个空格。代码执行后效果是( ) 。

A.  

B.  

C.  

D.  

【答案】D【知识点】字符串格式化、嵌套循环【解析】代码使用f-string格式化输出乘法表,外层循环控制被乘数1-9,内层循环控制乘数不超过被乘数,每行末尾换行。代码中可以发现等号后有空格,因此这样生成的是D选项的乘法表。

第13题 在数学中N!表示N的阶乘,即1到N的乘积,如3!=1*2*3,且0! = 1。下面的两段Python代码用于求1-N的阶乘之和,如N为3,则是1!+2!+3!。选项中的说法,正确的是( )。

A.虽然实现1的代码短小,但效率并不高

B.实现2的代码效率更高,且更易于理解

C.实现1因为应用了前项计算结果,计算量更小,因此效率高

D.两种实现,效率几乎一致

【答案】C【知识点】Python算法效率、阶乘计算【解析】实现1利用前一个阶乘结果计算下一个阶乘,避免重复计算。实现2每次都重新计算阶乘,计算次数增多,效率较低。

第14题 哥德巴赫猜想是指大于2的偶数都可以分解为两个质数之和,下面的代码用于验证4-1000之内的偶数能否分解为两个质数之和。下面Python代码中假设isPrime()是已经定义好用于判断正整数N是否为质数。对该段代码,的说法是( )。

A.将代码isPrime(j) and isPrime(i-j)修改为isPrime(j) == True and isPrime(i-j) == True效果相同

B.代码执行后,输出的一对质数,一定是小的数在前

C.即便将range(4,1000,2)中的1000修改为很大的整数,也不能说从数学上证明了哥德巴赫猜想

D.根据题意,break语句应该与if对齐

【答案】D【知识点】循环嵌套、数学函数【解析】代码遍历4到1000的偶数,对每个数寻找两个质数和。由于是从小到大遍历j,所以一定是小的数在前;break应在找到质数对后立即退出内层循环,移动会导致错误跳过后续检查。

第15题 下面Python代码实现输出如下图形,相关说法正确的是( )。

A.最后一行的print()有错,应该修改为print(""),print()函数不能没有参数

B. last += 1修改为last = last + 1执行效果相同

C.代码中的range(1, i + 1)应修改为range(1, i)

D.外层for循环前的last = 1修改为last = 0执行效果相同

【答案】B【知识点】Python循环控制、变量累加【解析】代码通过last变量累加并控制输出数字1-9循环,last += 1与last = last + 1完全等价。

2判断题(每题2分,共20分)

题号

1

2

3

4

5

6

7

8

9

10

答案

√

√

×

×

√

×

√

√

√

×

第1题C++、Python都是高级编程语言,它们每条语句的执行最终都要通过机器指令来完成。( )【答案】√【知识点】编程语言基础【解析】高级编程语言编写的程序需要通过编译器或解释器转换成机器指令才能被计算机执行。C++是编译型语言,Python是解释型语言,但最终都要转换为CPU可以直接执行的机器指令。

第2题 在Python代码中,假设N为正整数,则N - N // 10 * 10与N % 10都将获得N的个位数。(   )【答案】√【知识点】Python运算符、整数运算【解析】N % 10直接获取除以10的余数即个位数。N // 10 * 10先整除10去掉个位后再乘以10得到去掉个位的数,原数减去它就得到个位数。两种方法都能正确获取个位数。

第3题 在Python语句print(10 <= N <= 12)中,假设N为12,则其输出为True。原因是执行10 <= N后其值为True,True与12相比仍然是True。(   )【答案】×【知识点】Python比较运算、链式比较【解析】Python中的链式比较10 <= N <= 12是作为整体执行的,相当于10 <= N and N <= 12,而不是先计算10 <= N再与12比较。题目中的解释错误理解了运算过程。

第4题Python表达式N ** 0.5 ** 2 == N中的N如果为正整数,则表达式的值为True,相当于开平方后平方是本身。( )【答案】×【知识点】Python运算符优先级、幂运算【解析】**运算符是从右向左结合的,所以N ** 0.5 ** 2等价于N ** (0.5 ** 2)而不是(N ** 0.5) ** 2。0.5的平方是0.25,所以实际是开四次方,结果不等于N。

第5题 下面Python执行后将输出3*2=6。(   )

【答案】√【知识点】Python变量交换、f-string格式化【解析】Python支持多重赋值,a, b = b, a会同时交换两个变量的值。交换后a为3,b为2,使用f-string格式化输出3*2=6。

第6题 下面Python代码执行后将输出10。( )

【答案】×【知识点】Python循环控制、变量作用域【解析】循环中的continue会跳过后续语句直接进入下一次循环,但由于i没有被赋值就直接使用,会引发NameError错误。即使循环正常结束,i的最终值也是9而不是10。

第7题 下面Python代码执行后将输出1。( )

【答案】√【知识点】Python循环控制、break语句【解析】循环刚开始就遇到break语句立即退出循环,此时i的值仍为range的第一个值1。continue语句由于在break后永远不会执行到。

第8题 下面的Python代码执行后将输出10行“OK”。( )

【答案】√【知识点】Python嵌套循环、range函数【解析】外层循环i从0到4,内层循环j的范围是从0到i-1。当i=1时输出1次,i=2时输出2次,i=3时输出3次,i=4时输出4次,总共输出1+2+3+4=10次。

第9题 将下面Python代码中的range(1, 5)调整为range(5)输出结果相同。( )

【答案】√【知识点】Python range函数、累加运算【解析】range(1, 5)生成1,2,3,4,range(5)生成0,1,2,3,4。虽然range(5)多了个0,但由于是累加运算,加0不影响最终结果,所以两者结果相同。

第10题 下面Python代码执行后将输出0123。( )

【答案】×【知识点】循环嵌套【解析】内外层循环使用了相同的变量i,内层循环会覆盖外层的i值。每次外层循环后,i的值都被内层循环改变,不会按预期输出0123,而是00123。当外层i为0时,输出0;外层i为1时,输出0;外层i为2时,输出1;外层i为3和4时输出2和3。

3编程题(每题25分,共50分)

3.1编程题1

  • 试题名称:等差矩阵

  • 时间限制:1.0 s

  • 内存限制:512.0 MB

3.1.1 题面描述

小A想构造一个n行m列的矩阵,使得矩阵的每一行与每一列均是等差数列。小A发现,在矩阵的第i行第j列填入整数i×j,得到的矩阵能满足要求。你能帮小A 输出这个矩阵吗?

3.1.2输入格式

一行,两个正整数n,m。

3.1.3输出格式

共n行,每行m个由空格分割的整数,表示小A 需要构造的矩阵。

3.1.4样例

3.1.4.1输入样例1

3 4

3.1.4.2输出样例1

1 2 3 42 4 6 83 6 9 12

3.1.5数据范围

对于所有测试点,保证1≤n≤50,1≤m≤50。

【知识点】循环结构

【解题思路】依照题目要求使用双层for循环模拟。循环枚举i:1~n,循环枚举j:1~m,输出i * j。

3.1.6 参考程序

3.2编程题2

  • 试题名称:时间跨越

  • 时间限制:4.0 s

  • 内存限制:512.0 MB

3.2.1 题面描述

假设现在是y年m月d日h时而k小时后是y年m月d日h时,对于给定的y,m,d,h,k,小杨想请你帮他计算出对应的y,m,d,h,是多少。

3.2.2输入格式

输入包含五行,每行一个正整数,分别代表y,m,d,h,k。

3.2.3输出格式

输出四个正整数,代表y,m,d,h,。

3.2.4.1输入样例1

2008228231

3.2.4.2输出样例1

2008 2 29 0

3.2.5数据范围

对于全部数据,保证有2000≤y≤3000,1≤m≤12,1≤d≤31,0≤h≤23,1≤k≤24。数据保证为合法时间。

3.2.6提示

闰年判断规则

  • 普通闰年:年份能被4 整除,但不能被100 整除。

  • 世纪闰年:年份能被400 整除。

满足以上任意一条规则的年份就是闰年,否则是平年。

【知识点】多层分支、循环结构

【解题思路】注意数据范围1≤k≤24保证了时间不会跨越多天,因此逐小时累加并处理日/月/年进位即可,注意闰年判断。

3.2.7 参考程序

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

最新文章

随机文章