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

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

  • 2026-09-02 15:40:53
GESP第八次认证真题解析|Python二级真题回顾

点击上方蓝字·关注我们

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

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

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

一、单选题(每题2分,共30分)

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

答案

C

A

D

D

B

D

B

C

C

D

A

A

D

B

D

1、2024年10月8日,诺贝尔物理学奖“意外地”颁给了两位计算机科学家约翰·霍普菲尔德(John J. Hopfield)和杰弗里·辛顿(Geoffrey E. Hinton)。这两位科学家的主要研究方向是( )。

A.天体物理

B.流体力学

C.人工智能

D.量子理论

【答案】C

【考纲知识点】计算机历史

【解析】两位科学家是计算机科学家,只有C选项人工智能属于计算机科学。

2、计算机系统中存储的基本单位用B来表示,比如某个照片大小为3MB,其中B代表的是( )。

A. Byte

B. Block

C. Bulk

D. Bit

【答案】A

【考纲知识点】计算机基础

【解析】计算机中B表示Byte(字节)

1 B=8 bit,bit(比特)是计算机中信息传输的基本单位,代表二进制中的0或1‌,是最小的信息单位。而‌Byte(字节)是数据存储的基本单位,由8个相邻的bit组成‌,可以表示256种不同的状态。

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

A. 731

B. 431

C. 246

D. 56

【答案】D

【考纲知识点】算术运算

【解析】3**3的结果是27,27*2结果为54,最后输出的值是3+54-1=56。

4、在Python中,与range(10)效果相同的是( )。

A. range(1, 10)

B. range(1, 11)

C. range(1, 10, 1)

D. range(0, 10, 1)

【答案】D

【考纲知识点】range()函数

【解析】range (10) 表示生成从0到9的整数序列(包含0,不包含10),range (0, 10, 1) 与之相同,起始值为0,结束值为10(不包含),步长为1,答案选D。

5、下面Python代码执行后其输出是( )。

A. 123456789

B. 0123456789

C. 12345678910

D. 012345678910

【答案】B

【考纲知识点】range()函数和print()函数的用法

【解析】for循环中i从0到9,print (i, end="") 表示不换行输出每个数字,所以输出为0123456789,答案选B。

6、下面Python代码的相关说法中,正确的是( )。

A.上述代码执行后其输出相当于求1 - 10的和(包含10)

B.上述代码执行后其输出相当于求1 - 10的和(不包含10)

C.上述代码执行后其输出相当于求0 - 10的和(不包含10)

D.上述代码执行时将触发异常

【答案】D

【考纲知识点】循环和变量累加

【解析】循环中tnt += i 相当于tnt = tnt + i,将0到9依次累加到tnt中,但是程序并没有定义tnt的初始值,因此会报错,答案选D。

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

A. 1

B. 2

C. 9

D. 10

【答案】B

【考纲知识点】循环与条件判断

【解析】循环从1到9,当i为奇数时continue跳过本次循环,当i为偶数时执行else中的break语句,所以当i为2时就结束了整个循环,输出2,答案为B。if i%2当i除以2的余数为1时执行其后的continue,如果为0将break。I%2将首先得到余数值,然后转换为bool值,然后判断其结果为True还是False。

8、下面Python代码执行后的输出是( )。

for i in range(10):

  if i % 3:

    continue

  print("0", end="#")

else:

  print("1", end="#")

A. 1#1#1#1#1#1#1#1#1#

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

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

D. 0#0#0#0#

【答案】C

【考纲知识点】循环与条件判断

【解析】

当i = 0时,0 % 3 = 0,条件为假,执行print("0", end="#"),输出0#。

当i = 1时,1 % 3 = 1,条件为真,执行continue,直接进入下一次循环。

当i = 2时,2 % 3 = 2,条件为真,执行continue,直接进入下一次循环。

当i = 3时,3 % 3 = 0,条件为假,执行print("0", end="#"),输出0#。

当i = 4时,4 % 3 = 1,条件为真,执行continue,直接进入下一次循环。

当i = 5时,5 % 3 = 2,条件为真,执行continue,直接进入下一次循环。

当i = 6时,6 % 3 = 0,条件为假,执行print("0", end="#"),输出0#。

当i = 7时,7 % 3 = 1,条件为真,执行continue,直接进入下一次循环。

当i = 8时,8 % 3 = 2,条件为真,执行continue,直接进入下一次循环。

当i = 9时,9 % 3 = 0,条件为假,执行print("0", end="#"),输出0#。

当循环正常结束后(即没有被break语句中断),将会执行else部分,输出1#。

整体输出为0#0#0#0#1#,答案为C。执行continue时,循环体内其后面的语句将在本次循环中不被执行。i % 3其值为1或2时,将continue。

9、下面Python代码用于输出0 - 100之间(包含100)能被7整除但不能被3整除的数,横线处不能填入的代码是( )。

A. i % 7 == 0 and i % 3!= 0

B. not(i % 7) and i % 3!= 0

C. i % 7 and i % 3

D. i % 7 == 0 and not i % 3 == 0

【答案】C

【考纲知识点】条件判断表达式

【解析】A、B、D选项都能正确表示能被7整除但不能被3整除的条件,C选项i % 7 and i % 3表示既不能被7整除也不能被3整除的条件,答案选C。

10、下面Python代码用于求正整数各位数字之和,横线处应填入代码不能是( )。

A. tnt = tnt + N % 10

B. tnt += N % 10

C. tnt = N % 10 + tnt

D. tnt = N % 10

【答案】D

【考纲知识点】求数字各位数字之和

【解析】在循环中,N % 10 能得到N的个位数,将个位数累加到tnt中,然后N = N // 10 去掉个位数,继续循环。D选项tnt = N % 10 只将最后一位数字赋值给tnt,没有累加,不能求各位数字之和,答案选D。

11、下面Python代码执行后的输出是( )。

A. 0010120123

B. 01012012301234

C. 001012012301234

D. 01012012301234012345

【答案】A

【考纲知识点】嵌套循环

【解析】外层循环5次,内层循环分别执行0、1、2、3、4次,输出的j依次是0,0、1,0、1、2,0、1、2、3,答案为A选项。

12、下面Python代码用于实现九九乘法表。相关说法错误的是( )。

A.将代码最后一行的print()与if - else对齐效果相同

B.将代码最后一行的print()修改为print("")效果相同

C.将Lie * Hang > 9修改为Lie * Hang >= 10效果相同

D.将Lie * Hang > 9修改为Hang * Lie > 9效果相同

【答案】A

【考纲知识点】嵌套循环

【解析】A选项将print () 与if - else 对齐会导致每个乘法算式后多一个换行,与之前的效果不同;B选项print ("") 与print () 效果相同,都是起到换行的作用;C选项Lie * Hang >= 10 与Lie * Hang > 9 在判断条件时效果相同;D选项Hang * Lie > 9 与Lie * Hang > 9 在判断条件时效果相同。答案选A。

13、在数学中N!表示N的阶乘,即1到N的乘积,如3!=1*2*3。下面的Python用于求1 - N的阶乘之和,如N为3,则是1!+2!+3!。下面选项用于实现上述功能,其中不能实现的选项是( )。

【答案】D

【考纲知识点】嵌套循环

【解析】求阶乘是从1开始累乘到当前数,A、B、C选项都能正确实现,D选项nowNum = nowNum + i 计算错误,不是阶乘的计算方式,答案选D。

14、下面Python代码用于输出N和M之间的孪生素数,包含N和M,且孪生素数都在N和M之间。孪生素数是指间隔为2的两个数均为素数,如11和13分别是素数,且间隔为2。假设函数isPrime()是用于判断N是否为素数的函数,如果是素数返回值是True,不是素数则返回值是False。为完成上述功能,横线处应填上的代码是( )。

A. M - 2

B. M - 1

C. M

D. M + 1

【答案】B

【考纲知识点】孪生素数的判断

【解析】要判断N到M之间的孪生素数,循环应该到M - 1,因为判断的是i和i + 2 是否为素数,到M - 1 就能包含M - 2 和M这组可能的孪生素数,答案选B。

15、下面Python代码实现输出如下图形,横线应填入的代码是( )。

【答案】D

【考纲知识点】循环结构与图形输出

【解析】要输出等腰三角形图形,每行前面的空格数应该是height - 行数 个,又因为行数等于i+1,因此空格数应该是height - (i+1),即height - i - 1个,星号数应该是2 * i + 1 个,答案选D。

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

题号

1

2

3

4

5

6

7

8

9

10

答案

√

√

√

×

√

×

√

√

×

√

1、在Windows的资源管理器中为已有文件A建立副本的操作是Ctrl + C,然后Ctrl + V。( )

【答案】正确

【考纲知识点】Windows操作系统基本操作

【解析】在Windows资源管理器中,Ctrl + C 是复制文件,Ctrl + V 是粘贴文件,可实现为已有文件建立副本,表述正确。

2、在Python代码中,假设N为正整数,则print(N - N // 10 * 10)将获得N的个位数。( )

【答案】正确

【考纲知识点】Python表达式获取正整数个位数

【解析】N // 10 会舍去个位数,N // 10 * 10会将N的个位数变成0,N - N // 10 * 10可以获得N的个位数。

3、在Python语句print(10 <= N <= 12)中,假设N为12,则其输出为True。( )

【答案】正确

【考纲知识点】比较运算符和逻辑表达式

【解析】10 <= 12 为True,12 <= 12 也为True,所以10 <= N <= 12 中N为12时输出True,表述正确。

4、如果Python表达式int(N ** 0.5) ** 2 == N的值为True,则说明N为完全平方数,如4、9、25等。( )

【答案】正确

【考纲知识点】乘方运算符

【解析】先计算N ** 0.5 得到N的平方根,再取整后平方,如果等于N,则N是完全平方数,表述正确。

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

【答案】正确

【考纲知识点】格式化输出

【解析】f"{a}{b}={a * b}" 会将变量a、b的值代入输出2*3 = 6,表述正确。

6、以下Python代码因为循环变量为_将导致错误,即_不能作为变量名称,不符合Python变量命名规范。( )

【答案】错误

【考纲知识点】变量命名规范

【解析】在Python中,_可以作为循环变量,不违反变量命名规范,表述错误。

7、下面Python代码执行后将输出9。( )

【答案】正确

【考纲知识点】continue和break语句

【解析】循环每次都会执行continue跳出本次循环,继续下一次循环,因此break一直无法执行。10次循环结束后,i的值为9,因此会输出9,表述正确。

8、下面的Python代码执行后将输出18行“OK”。( )

【答案】正确

【考纲知识点】嵌套循环

【解析】外层循环i从8到2每次减2,但是不会取到2,因此外层循环i的值依次为8、6、4,内层循环每轮执行i次,因此一共会输出8+6+4=18行“OK”,表述正确。

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

【答案】错误

【考纲知识点】range()函数

【解析】range (1, 5) 生成1到4的序列,range (5) 生成0到4的序列,结果不同,表述错误。

10、下面两段Python代码都是用于求1 - 10的和,其运行结果相同。通常说来,for - in循环都可以用while循环实现。( )

【答案】正确

【考纲知识点】for循环与while循环

【解析】两段代码都能正确计算1到10的和,且for - in 循环在很多情况下可以用while循环实现,表述正确。

三、编程题(每题25分,共50分)

题号

1

2

答案



1、寻找数字

题目描述

小杨有一个正整数a,小杨想知道是否存在一个正整数b满足a=b4。

输入格式

第一行包含一个正整数t,代表测试数据组数。

对于每组测试数据,第一行包含一个正整数代表a。

输出格式

对于每组测试数据,如果存在满足条件的正整数b,则输出b,否则输出-1。

样例

对于全部数据,保证有1≤t≤105,1≤a≤ 108。

【题目大意】t代表测试数据组数,意味着接下来要输入t个正整数a。对于每个输入的正整数a,先计算a的四次方根并取整得到b,然后判断b的四次方是否等于a,如果相等则输出b,否则输出- 1。

【考纲知识点】平方根函数

【解题思路】先导入math库用于数学计算,然后输入测试数据组数t。接着循环t次,每次输入一个正整数a。先计算a的平方根的平方根,也就是a的四次方根,再取整,将取整结果赋值给b。最后判断b的四次方是否等于a,如果成立输出b,否则输出- 1。

【参考程序】

2、数位和

题目描述

小杨有几个正整数,小杨想知道这些正整数的数位和中最大值是多少。

“数位和”指的是一个数字中所有数位的和。例如:

对于数字12345,它的各个数位分别是1,2,3,4,5。将这些数位相加,得到:

1+2+3+4+5=15

因此,12345的数位和是15。

输入格式

第一行包含一个正整数n,代表正整数个数。

之后n行,每行包含一个正整数。

输出格式

输出这些正整数的数位和的最大值。

样例

对于全部数据,保证有1≤n≤105,每个正整数不超过1012。

【题目大意】n代表正整数的个数,意味着接下来要输入n个正整数。对于每个输入的正整数,通过循环计算其数位和,然后与已有的最大值比较,更新最大值,最后输出最大值。

【考纲知识点】最大值函数,循环嵌套,求取数字每一位数

【解题思路】首先输入正整数个数n,初始化最大值x=0。循环n次,每次输入一个正整数tmp,计算tmp的数位和smu,通过循环取余和整除操作,将每个数位相加。求取数位和之后,比较smu和x,如果smu>x,则更新x=smu。最后输出最大值x。

【参考程序】

技术支持:冉亚玲

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


点击此处 “阅读原文” 查看更多内容

最新文章

随机文章