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

GESP第六次认证真题解析|Python四级真题回顾

  • 2026-09-10 07:35:11
GESP第六次认证真题解析|Python四级真题回顾

点击上方蓝字关注我们吧

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

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

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

GESP2024年6月认证Python四级

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

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

答案

C

B

C

D

C

A

A

A

D

A

D

D

B

B

D

1、小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?( )

A. 1

B. 2

C. 3

D. 4

【答案】C

【考纲知识点】常识

【解析】图形化、Python、C++三种。

2、下面流程图在yr输入2024时,可以判定yr代表闰年,并输出2月是29天 ,则图中菱形框中应该填入( )。

A. (yr%400==0) || (yr%4==0)

B. (yr%400==0) || (yr%4==0 && yr%100!=0)

C. (yr%400==0) && (yr%4==0)

D. (yr%400==0) && (yr%4==0 && yr%100!=0)

【答案】B

【考纲知识点】流程图

【解析】四年一闰,百年不闰,四百年再闰。

闰年判断条件:(yr是400的倍数) 或 (yr是4的倍数并且不是100的倍数)。

3、执行下面Python代码后,输出的结果可能是?( )

A. {'Tom': 10, 'Join': 13, 'Gaia': 12}

B. {'TOM': 10, 'JOIN': 13, 'GAIA': 12}

C. {('JOIN', 13), ('TOM', 10), ('GAIA', 12)}

D. {('Join', 13), ('Tom', 10), ('Gaia', 12)}

【答案】C

【考纲知识点】集合

【解析】集合推导式生成大写名字和年龄的元组。

4、函数fun的定义如下,调用该函数的语句错误的是?( )

A. fun(1, 2, 3)

B. fun(1, 2)

C. fun(y=2, x=1)

D. fun(1, y=2, 3)

【答案】D

【考纲知识点】函数调用及参数传递

【解析】D选项位置参数在关键字参数后,顺序错误。

5、执行下面Python代码后,输出的结果是?( )

A. 30

B. 45

C. 100

D.语法错误

【答案】C

【考纲知识点】函数调用及参数传递

【解析】10 + 20 + 15 + 25 + 30 = 100。

6、执行下面Python代码后,输出的结果是?( )

A. 40

B. 36

C. 30

D.语法错误

【答案】A

【考纲知识点】函数调用及参数传递

【解析】x=10,y=20,关键字参数的值为6、1、3。计算:10 + 20 + 6 + 1 + 3 = 40。

7、执行下面python代码后,输出的结果是?( )

A. 1#3#

B. 1#1#

C. 3#3#

D. add函数语法错误

【答案】A

【考纲知识点】局部变量

【解析】a()第一次输出1,count变为3;第二次输出3,count变为5。结果是1#3#。

8、执行下面python代码后,输出的结果是?( )

A. 5#5#

B. 5#1#

C. 1#1#

D. 1#5#

【答案】A

【考纲知识点】全局变量

【解析】sums(5)将全局变量s设置为0并加5,输出5;然后再次输出全局变量s,结果是5#5#。

9、执行下面python代码后,输出的结果是?( )

A. [10, 20, 30] [10, 20, 30]

B. [10, 20, 30, 40] [10, 20, 30, 40]

C. [10, 20, 30] [10, 20, 30, 40]

D. [10, 20, 30, 40] None

【答案】D

【考纲知识点】函数

【解析】append方法修改列表a并返回None,所以a变为[10, 20, 30, 40],b为None。

10、在一个农场上,有一头母牛。根据农场的规则,这头母牛每年年初都会生出一头小母牛。每头新生的小母牛从它们出生的第四个年头开始,也会每年年初生出一头新的小母牛。假设没有母牛死亡,并且每头母牛都严格遵循这个规则。下列程序用来计算在第n(n<30)年时,农场上共有多少头母牛,其中横线处填写的代码为?()

A. lst[i - 1] + lst[i - 3]

B. lst[i - 2] + lst[i - 3]

C. lst[i - 1] + lst[i - 2]

D. lst[-1] + lst[-3]

【答案】A

【考纲知识点】列表

【解析】每年新增的母牛数量等于前一年和三年前母牛的总和,所以填lst[i - 1] + lst[i - 3]。

11、程序段如下:

其中,n为正整数,则该段程序的最坏时间复杂度是?( )

A. O(n)

B. O(2n)

C. O(n3)

D. O(n2)

【答案】D

【考纲知识点】时间复杂度

【解析】嵌套的两层循环每次迭代次数分别为n-1和n-i-1,总体时间复杂度为O(n2)。

12、执行下面Python代码后,输出的结果是?( )

A. {'Java', Python'}

B. {SQL', 'C++'}

C. {'Java', 'SQL', 'Python', 'C++'}

D. {'Java'}

【答案】D

【考纲知识点】集合

【解析】所有用户共有的技能只有Java,交集操作结果为{'Java'}。

13、执行下面Python代码后,输出的结果是?( )

A. [3, 1, 2, 4, 0]

B. [0, 4, 2, 1, 3]

C. [3, 0, 2, 1, 4]

D. [0, 3, 2, 4, 1]

【答案】B

【考纲知识点】排序

【解析】orted(enumerate(lst), key=lambda x: x[1])按值排序并返回索引,结果是[0, 4, 2, 1, 3]。

14、执行下面Python代码后,文件ip.txt中的内容用记事本打开时显示为?( )

A. 202.206.224.21192.168.224.1

B. 202.206.224.21

192.168.224.1

C. 202.206.224.21\n192.168.224.1

D. 202.206.224.21\n192.168.224.1\n

【答案】B

【考纲知识点】文件读写

【解析】每个IP地址后都有一个换行符\n,所以文件内容显示为两行:202.206.224.21和192.168.224.1。

15、执行下面Python代码,输入0和字符串“abc”后,输出的结果是?( )

A. 0#2#3#

B. 0#3#

C. 1#2#3#

D. 1#3#

【答案】D

【考纲知识点】异常处理

【解析】第二个输入“abc”导致ValueError,触发通用except块打印1,最后finally块打印3,结果为1#3#。

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

题号

1

2

3

4

5

6

7

8

9

10

答案

√

√

√

×

√

×

×

×

√

√

1、GESP测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。( )

【答案】 √

【考纲知识点】常识

【解析】GESP同一级别的能力基本上与编程语言无关。

2、在Python中,print(list("GESP"))执行后输出['G', 'E', 'S', 'P']。( )

【答案】 √

【考纲知识点】列表

【解析】list("GESP")将字符串"GESP"转换为列表,每个字符成为列表中的一个元素,所以输出为['G', 'E', 'S', 'P']。

3、执行下面Python代码后,输出两个True。

【答案】 √

【考纲知识点】字符串

【解析】"h" in "hello"和"he" in "hello"都为True,因为"h"和"he"都是字符串"hello"的子串

4、执行下面Python代码后,输出两个True。

【答案】×

【考纲知识点】列表

【解析】lst1 == lst2为True(内容相同),但lst1 is lst2为False(不同对象),所以输出True和False。

5、执行下面Python代码,调用函数fun可以得到一个元组类型的数据。

【答案】 √

【考纲知识点】元组

【解析】fun(8, 5)返回(1, 3),类型为元组,所以type(fun(8, 5))输出<class 'tuple'>。

6、Python程序中,全局变量与局部变量不允许重名。

【答案】×

【考纲知识点】变量的作用域

【解析】Python程序中全局变量与局部变量允许重名,但在函数内部,局部变量会覆盖同名的全局变量。

7、下面这段程序的时间复杂度为平方阶O(n2)。( )

【答案】×

【考纲知识点】时间复杂度

【解析】代码包含一个简单的for循环,时间复杂度为O(n),而不是O(n^2)。

8、Python在处理程序异常时,异常处理结构能够发现程序段中的语法错误。

【答案】×

【考纲知识点】异常处理

【解析】

Python异常处理结构(try-except)用于捕获运行时错误,不能发现程序中的语法错误。语法错误在代码执行前会被解析器检测到。

9、要打开一个已经存在的图片文件并读取但不修改数据,则打开模式应该设定为rb。

【答案】 √

【考纲知识点】文件读写

【解析】在Python中,要以二进制模式读取文件(如图片文件),应该使用模式rb,表示只读且以二进制方式打开文件。

10、执行下面Python代码后,输出的结果为za。

【答案】 √

【考纲知识点】字符串

【解析】max('az', 'za', key=lambda a: a[0])按第一个字符比较,'z' > 'a',所以输出结果为za。

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

题号

1

2

答案



1、黑白方块

题面描述

⼩杨有⼀个n⾏m列的⽹格图 ,其中每个格⼦要么是⽩⾊ ,要么是⿊⾊ 。

对于⽹格图中的⼀个⼦矩形 ,⼩杨认为它是平衡的当且仅当其中⿊⾊格⼦与⽩⾊格⼦数量相同。 ⼩杨想知道最⼤的平衡⼦矩形包含了多少个格⼦。

输入格式

第⼀⾏包含两个正整数n, m ,含义如题⾯所⽰ 。

之后n⾏ ,每⾏⼀个长度为 m的01串 ,代表⽹格图第 i⾏格⼦的颜⾊ ,如果为  ,则对应格⼦为⽩⾊ ,否则为⿊ ⾊ 。

输出格式

输出⼀个整数,代表最⼤的平衡⼦矩形包含格⼦的数量,如果不存在则输出0。

样例1

样例解释

对于样例1,假设(i, j) 代表第i⾏第j列 ,最⼤的平衡⼦矩形的四个顶点分别为 (1 , 2) ,( 1 , 5) ,(4 , 2) ,(4 , 5)。

数据范围

对于全部数据 ,保证有 1 ≤ n, m ≤ 10。

【考纲知识点】

复合数据类型

【解题思路】

首先解决 “如何判断一个矩阵 a是一个平衡矩阵”这个问题:枚举矩阵中的每一个元素,用两个计数器a[0]、a[1]分别记录0和1的数量,如果最终a[0]==a[1],那么就是平衡矩阵,复杂度是O(n^2)。

然后解决“如何枚举一个矩阵中的所有子矩阵”这个问题:对于任意一个子矩阵,它都有一个起始行、一个终止行、一个起始列和一个终止列,我们可以用4个for循环来分别枚举它们,这样就应该把每个子矩阵确定下来,复杂度是O(n^4)。

如此一来,我们便可以用O(n^4)的复杂度枚举每一个子矩阵,然后再花O(n^2)的复杂度判断是否是平衡矩阵,总体时间复杂度为O(n^6)。

参考程序

2、宝箱

题面描述

⼩杨发现了n个宝箱 ,其中第 i个宝箱的价值是ai。

⼩杨可以选择⼀些宝箱放⼊背包并带走 ,但是⼩杨的背包⽐较特殊 ,假设⼩杨选择的宝箱中最⼤价值为x,最⼩价值为y,⼩杨需要保证x - y ≤ k ,否则⼩杨的背包会损坏。

⼩杨想知道背包不损坏的情况下, ⾃⼰能够带⾛宝箱的总价值最⼤是多少。

输入格式

第⼀⾏包含两个正整数n, k ,含义如题⾯所⽰ 。

第⼆⾏包含n个正整数a1, a2 , · · · , an,代表宝箱的价值。

输出格式

输出⼀个整数 ,代表带走宝箱的最⼤总价值。

样例1

样例解释

在背包不损坏的情况下 ,⼩杨可以拿⾛两个价值为 2的宝箱和⼀个价值为3的宝箱。

数据范围

对于全部数据 ,保证有 1 ≤ n ≤ 1000, 0 ≤ k ≤ 1000, 1 ≤ ai≤ 1000。

【考纲知识点】

排序

【解题思路】

比较容易想到的做法是用O(n)的复杂度枚举一个a[i]作为最大值x,然后用O(n)的复杂度枚举另一个值a[j]作为最小值y,最后用O(n)的复杂度枚举数组,计算一下值处于[x,y]的元素总和sum,算出来的总和与ans取最大值即可,但是这样的做法是O(n^3)的,没有办法拿到满分;

我们发现,之所以我们最后需要O(n)的复杂度枚举数组的元素计算总和,是因为我们不知道数值处在[x,y]范围内的元素总和是多少,所以需要枚举计算。

为了解决这个问题,我们可以先将数组从小到大排序,这样一来,数组中的每个子区间[j,i]的左右端点的值a[j]、a[i]分别就对应了我们枚举的最小值x,和最大值y,又因为数组是有序的,因此,数值处于[x,y]范围内的元素正好就是区间[j,i]内的所有元素,这样一来,我们就可以在向前枚举a[j](也就是最小值y)的同时,顺便计算区间[j,i]内的元素总和sum,时间复杂度降为了O(n^2)。

参考程序

技术支持: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公众号,了解更多资讯

最新文章

随机文章