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

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

  • 2026-09-12 08:53:26
GESP第11次认证真题解析|Python四级真题回顾

点击上方蓝字·关注我们

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

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

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

Python四级

2025年09月

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

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

答案

D

C

B

B

C

B

A

C

D

D

B

C

C

B

A

第1 题 人工智能现在非常火 ,小杨就想多了解一下 ,其中就经常听人提到“大模型” 。那么请问这里说的“大模型”最贴切是指 (   )。

A.大电脑模型

B.大规模智能

C.智能的单位

D.大语言模型

【答案】D

【考纲知识点】人工智能基础概念

【解析】“大模型” 在 AI 领域特指 “大语言模型”,可实现自然语言理解与生成等复杂任务。A “大电脑模型” 无此概念,B “大规模智能” 表述模糊,C “智能的单位” 不符合定义,故D 正确。

第2 题 在TCP协议中 ,完成连接建立需要通过(  )握手。

A. 一次

B. 二次

C. 三次

D. 四次

【答案】C

【考纲知识点】TCP协议基础

【解析】TCP协议通过 “三次握手” 建立可靠连接:①客户端发请求,②服务器确认,③客户端再确认。一次(A)、二次(B)握手无法保证可靠性,四次(D)握手用于断开连接,故C 正确。

第3 题 执行下面Python代码后 ,输出的结果是?  ( )

A.  (1 , [2 , 3 ] , 4 )

B.  (1 , [2 , 3 , 5 , 6 ] , 4 )

C.  (1 , [2 , 3 , [5 , 6 ]] , 4 )

D.  报错

【答案】B

【考纲知识点】元组与列表特性

【解析】Python中元组不可变,但内部可变元素(如列表)可修改。t[1]是列表[2,3],extend([5,6])会将元素追加到列表,元组最终为(1, [2,3,5,6], 4)。A未体现修改,C错误使用extend,D无报错,故 B正确。

第4 题 执行下面Python代码后 ,输出的结果是?  ( )

A.  [1 ]

B.  [1 , 3 ]

C.  报错

D.  ( 'a ' , [1 , 3 ])

【答案】B

【考纲知识点】字典与列表引用

【解析】列表data转字典d时,键'a'对应列表[1](字典存列表引用)。d['a'].append(3)会修改原列表,故data[0][1]变为[1,3]。A未体现修改,C无报错,D格式错误,故 B正确。

第5 题  以下哪种函数定义是正确的?  ( )

A.  def  func(a=1 , b , *args) :pass

B.  def  func(a , b=2 ,  **kwargs , *args) :pass

C.  def  func(a , *args , b=2 , **kwargs) :pass

D.  def  func(**kwargs , *args , a ) :pass

【答案】C

【考纲知识点】函数参数定义顺序

【解析】Python函数参数需遵循 “位置参数→*args→默认参数→**kwargs”顺序。A默认参数在位置参数前,B**kwargs在*args前,D**kwargs在最前,均错误;C顺序正确,故 C正确。

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

A.  [1 ]  [2 ]

B.  [1 ]  [1 , 2 ]

C.  [1 ]  [2 , 1 ]

D. 报错

【答案】B

【考纲知识点】函数默认参数特性

【解析】函数默认参数(可变类型如lst=[])赋值于定义时,多次调用共享该列表。第一次func(1)列表为[1],第二次func(2)列表为[1,2]。A未体现共享,C追加顺序错,D无报错,故 B正确。

第7 题 执行下面Python代码后 ,输出的结果是?  ( )

A. 6

B. (1 , 2 , 3 )

C.报错

D. 123

【答案】A

【考纲知识点】元组解包操作

【解析】*values将元组(1,2,3)拆分为demo的三个参数,函数返回1+2+3=6。B未解包报参数错,C无报错,D是字符串拼接,故 A正确。

第8 题 下列有关函数内修改全局变量描述正确的是?  ( )

A.函数内部可以直接修改任何全局变量

B.函数内部无法修改全局变量,只能读取

C.需要使用global关键字声明后才能修改全局变量

D.需要使用nonlocal关键字声明后才能修改全局变量

【答案】C

【考纲知识点】全局变量修改

【解析】函数内部默认无法修改全局变量,需用global声明后才可修改。A “直接修改” 错,B “无法修改” 绝对,Dnonlocal用于嵌套函数,故C 正确。

第9 题 下列有关Python处理异常的说法正确的是? ( )

A. 每一个try 模块只能设定一个except 模块。

B. finally 模块仅在 try模块中没有异常发生时才会执行。

C. else 模块会在 except模块之后,finally模块之前执行。

D.异常处理可以弥补程序漏洞 ,使得程序在一些情况下不会终止运行。

【答案】D

【考纲知识点】异常处理机制

【解析】A一个try可配多个except,Bfinally无论有无异常都执行,Celse仅try无异常时执行且表述不严谨;D异常处理可避免程序终止,正确,故D 正确。

第10 题  为了安全地打开并读取一个文件 ,确保即使发生异常 ,文件也能被正确关闭 ,最佳做法是?  ( )

A.将 file .close() 放在 try 块的最后一行。  

B. 将file .close() 放在except 块中。

C. 将file .close() 放在else 块中。

D.使用with open('file .txt ')  asf:语句。

【答案】D

【考纲知识点】文件上下文管理器

【解析】:with语句自动管理文件资源,异常时也会关闭文件。A、B、C均可能导致资源泄漏,D是最佳做法,故 D正确。

第11 题  文件votes.txt内容如下:

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

A. [ 'Alice ' , 'Bob ' , 'Alice ' , 'Charlie ' , 'Bob ' , 'Alice ' , 'Alice ' ]

B. { 'Alice ' : 4 , 'Bob ' : 2 , 'Charlie ' : 1}

C. {4 , 2 , 1}

D. { 'Alice ' ,  'Bob ' ,  'Charlie '}

【答案】B

【考纲知识点】文件读取与字典统计

【解析】函数读取votes.txt,用字典统计姓名次数:Alice4次、Bob2次、Charlie1次,返回统计字典。A是文件内容列表,C是值集合,D是键集合,故 B正确。

第12 题  以下代码的时间复杂度是?  (  )

A. (1)

B. O(n)

C. O(n²)

D. o(logn)

【答案】C

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

【解析】代码含两层嵌套循环,外层n次、内层n次,总执行次数n×n,时间复杂度为O(n²)。A为O(1)、B为O(n),D为O(logn),故C 正确。

第13 题  下面代码采用递推算法来计算斐波那契数列f(n) = f(n    1) + f(n    2) ,则横线上应填写? ( )

A.  a = b + a

B. a , b = a + b ,  a   

C. a , b = b , a + b

D.  b = a + b

【答案】C

【考纲知识点】斐波那契递推

【解析】斐波那契递推需更新a为前b、b为前a+b。A仅更新a,B不满足,D仅更新b,均错误;C更新正确,故 C正确。

第14 题  以下是Python冒泡排序(由小到大) 的优化版本 ,加入了提前终止机制 。划线处应填入? (  )

A.  True  False

B.  False  True

C.  True  break

D.  False  continue

【答案】B

【考纲知识点】优化版冒泡排序

【解析】优化冒泡排序需初始化swapped=False(标记是否交换),交换时设swapped=True。A初始True误判,Cbreak位置错,Dcontinue无法终止,故B 正确。

第15 题 执行下面Python代码后 ,输出的结果是?  ( )

A.  [ 'Date ' ,  'cherry ' ,  'banana ' ,  'Apple ' ]

B.  [ 'Apple ' ,  'banana ' ,  'cherry ' ,  'Date ' ]

C.  [ 'date ' ,  'cherry ' ,  'banana ' ,  'apple ' ]

D.  [ 'apple ' ,  'banana ' ,  'cherry ' ,  'date ' ]

【答案】A

【考纲知识点】sorted函数排序

【解析】key=str.lower按小写排序,reverse=True降序。小写顺序apple<banana<cherry<date,降序对应原字符串为['Date', 'cherry', 'banana', 'Apple']。B是升序,C、D修改原字符串,故 A正确。

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

题号

1

2

3

4

5

6

7

8

9

10

答案

×

√

√

√

×

√

×

×

×

√

第1 题 在集成开发环境里调试程序时 ,要注意不能修改源程序, 因为如果修改 ,就要终止调试、关闭该文件并重新打开 ,才能再次开始调试 。  (  )

【答案】×

【考纲知识点】集成开发环境基本操作

【解析】在大多数现代集成开发环境中,支持 “动态调试”—— 即调试过程中修改源程序后,无需终止调试、关闭并重新打开文件,只需进行 “重新编译” 或 “热更新” 操作,就能继续调试。题目中描述的 “修改后必须终止调试、关闭文件并重新打开才能再次调试” 不符合主流 IDE 的实际功能,因此该说法错误。

第2 题 执行下面Python代码后 ,输出的结果为 qu 。

【答案】×

【考纲知识点】列表的基本使用

【解析】首先,data['numbers'].pop(-2)会从列表 [10, 20, 30] 中移除倒数第二个元素(即20),并返回20。然后,data["title"] += str(20) 使得data['title'] 变为'quiz20'。最后,data['title'][:-2]是对字符串切片,取从开头到倒数第3 个字符(因为[:-2]表示不包含最后两个字符),即'quiz',而非'qu'。因此,题目中说输出结果为qu是错误的。

第3 题 执行下面代码后 ,输出的结果为5。

【答案】×

【考纲知识点】字典

【解析】对于字典d = {'a': 3, 'b': 5, 'c': 1},max(d, key=lambda k: d[k]) 的作用是根据字典的值来选取对应的键。

这里lambda k: d[k] 表示以 “键对应的字典值” 作为比较依据,字典中值最大的是5,对应的键是'b',所以代码输出的是'b',而非5。因此,题目中说输出结果为5 是错误的,答案应为 “×”。

第4 题 在 Python中,如果一个函数没有执行到任何return语句 ,或者 return语句后没有指定返回值 ,Python解释器会默认让函数返回None 。

【答案】√

【考纲知识点】python基础语法

【解析】在Python中,函数的返回值有明确规则:当函数没有return语句,或return后未指定返回值时,Python解释器会默认让该函数返回None,这是Python 的语法规定,因此该说法正确。

第5 题 执行下面Python代码会抛出ValueError 异常。

【答案】×

【考纲知识点】异常的机制

【解析】要解析这道题,我们看代码逻辑:len()函数用于获取序列(如字符串、列表等)的长度,而123 是整数类型,不是len() 能处理的序列类型,执行len(123) 会抛出TypeError(类型错误),而非ValueError(值错误)。因此题目说法错误,答案为 “×”。

第6 题 若文件log.txt已存在 ,执行以下代码后文件内容被清空 ,仅保留 New  log  entry 。

【答案】√

【考纲知识点】文件的写入模式

【解析】在Python 中,以"w"(写入模式)打开文件时,如果文件已存在,会先清空原有内容,然后再写入新内容。代码中以"w" 模式打开log.txt,并写入 “New log entry”,因此文件原有内容会被清空,仅保留新写入的内容,该说法正确。

第7 题  以下代码的空间复杂度是 O(n) 。

【答案】√

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

【解析】要解析这道题,我们从空间复杂度的定义出发:空间复杂度是指算法运行过程中临时占用的存储空间大小。

在函数create_dict(n) 中,循环会向字典my_dict 中插入n 个键值对,字典占用的存储空间与n 成正比,因此其空间复杂度为O(n),该说法正确。

第8 题 递推算法必须存在至少一个初始值 ,这是递推算法能够启动和正确运行的基础。

【答案】√

【考纲知识点】递推算法

【解析】递推算法的核心是通过已知的初始值,按照递推关系逐步推导后续结果。如果没有初始值,递推就失去了起点,无法启动和正确运行,因此递推算法必须存在至少一个初始值,该说法正确。

第9 题 选择排序和插入排序的平均时间复杂度都是 O(n2), 因此它们的效率在任何情况下都完全相同。

【答案】×

【考纲知识点】选择排序插入排序的时间复杂度

【解析】虽然选择排序和插入排序平均时间复杂度都是O (n²),但插入排序在接近有序的序列中效率更高(可达到O (n)),而选择排序时间复杂度始终是O (n²),所以它们的效率并非在任何情况下都相同,该说法错误。

第10 题 你收集了一些咖啡馆的信息 ,存储在字典 coffee_shops中, 以下代码可以筛选出所有评分(rating )高于4.5 且距离( distance )在1 公里以内的咖啡馆。

【答案】√

【考纲知识点】字典,函数式编程

【解析】代码通过filter 函数结合lambda 表达式,筛选出rating > 4.5 且distance < 1.0 的咖啡馆字典,逻辑符合题目要求,因此说法正确。

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

题号

1

2

答案

3.1编程题1

试题名称:排兵布阵

时间限制:1.0 s

内存限制:512.0 MB

3.1.1 题目描述

作为将军,你自然需要合理地排兵布阵。地图可以视为n行m列的网格,适合排兵的网格以1标注,不适合排兵的网格以0标注 。现在你需要在地图上选择一个矩形区域排兵,这个矩形区域内不能包含不适合排兵的网格。请问可选择的矩形区域最多能包含多少网格?

3.1.2 输入格式

第一行,两个正整数n, m ,分别表示地图网格的行数与列数。

接下来n行 ,每行m个整数ai, 1 , ai,2, … , ai,m,表示各行中的网格是否适合排兵。

3.1.3 输出格式

一行,一个整数,表示适合排兵的矩形区域包含的最大网格数。

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,m≤12,0≤ai,j≤1。

3.1.6 参考程序

【题目大意】在n行m列网格(1适合排兵,0不适合)中,找全为1的矩形区域,求最大网格数(面积= 行数×列数),数据范围n,m≤12。

【考纲知识点】二维数组遍历,暴力枚举

【题目解析】这道题是要在n行m列的网格地图里,找一个只包含适合排兵的网格(标记为1)的矩形区域,求这个区域最多能包含的网格数。解题思路是枚举所有可能的矩形区域,然后验证每个区域是否合法,最后找出面积最大的合法矩形。具体来说,我们可以通过确定矩形的左上角顶点(用行号u和列号l表示)和右下角顶点(用行号d和列号r表示,其中d不小于u,r不小于l),来枚举所有可能的矩形范围。对于每个枚举到的矩形,遍历其内部所有网格,检查是否全为1,如果是,就计算这个矩形的面积(行跨度乘以列跨度,即(r - l + 1)×(d - u + 1)),并不断更新最大面积。因为题目中n和m都不超过12,所以这样的枚举方式效率是足够的,能在规定时间内找到答案。比如输入样例里,最终找到的最大矩形是2行2列的,面积为4。

3.2 编程题 2

试题名称:最长连续段

时间限制:1.0 s

内存限制:512.0 MB

3.2.1 题目描述

对于k 个整数构成的数组[b1, b2,  , bk],如果对1 ≤ i < k都有bi+1= bi+ 1 ,那么称数组b 是一个连续段。

给定由n 个整数构成的数组[a1, a2, … , an],你可以任意重排数组a中元素顺序。请问在重排顺序之后,a所有是连续段的子数组中,最长的子数组长度是多少?

例如,对于数组[1 , 0, 2, 4],可以将其重排为[4, 0, 1 , 2],有以下10个子数组:

[4] , [0] , [1] , [2] , [4, 0] , [0, 1] , [1 , 2], [4, 0, 1] , [0, 1 , 2] , [4, 0, 1 , 2]

其中除[4, 0] , [4, 0, 1] , [4, 0, 1 , 2] 以外的子数组均是连续段, 因此是连续段的子数组中,最长子数组长度为3。

3.2.2 输入格式

第一行,一个正整数n,表示数组长度。

第二行,n个整数a1, a2, … , an,表示数组中的整数。

3.2.3 输出格式

一行,一个整数,表示数组 重排顺序后,所有是连续段的子数组的最长长度。

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 数据范围

对于 40%的测试点,保证1≤n≤8。

对于所有测试点,保证1≤n≤105,-109≤ ai≤109。

3.2.6 参考程序

【题目大意】数组可任意重排,求重排后“连续段子数组”(元素依次+ 1)的最长长度,数据范围n≤10⁵,a_i范围[-10⁹,10⁹]。

【考纲知识点】数组排序,连续序列统计

【题目解析】这道题是要找出数组重排后最长的连续段子数组长度。连续段的定义是数组中后一个数比前一个数大1。解题思路是先对数组排序,然后遍历排序后的数组,统计连续递增(每次加1)的序列长度。具体来说,先将数组排序,这样相同的数会相邻,递增的序列也能按顺序排列。然后从第一个数开始,依次判断当前数是否是前一个数加1,如果是,连续长度加1;如果不是,就重新开始计数,同时不断更新最大的连续长度。比如样例中的数组排序后是0、1、2、4,其中0、1、2是连续递增的,长度为3,这就是最长的连续段长度。

策划:GESP技术委员会副主席 刘晓庆

技术支持:王岐

GESP报名倒计时7天

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

最新文章

随机文章