GESP Python 编程四级 · 2026 年 3 月卷
GESP · Python · 共 27 题 · 满分 100 分
姓名:____________日期:____________得分:____________
- 1.单选题2 分2026年春节联欢晚会上一个武术表演节目《武 BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备( )。
- A.用于检测重心的重力传感器
- B.预装的AI算法程序
- C.接收动作指令的遥控器
- D.拍摄其他机器人的摄像头
- 2.单选题2 分下面代码用来找出输入的 N 个正整数中最大的一个。如果将代码段用流程图来表示,则L1标记的代码行应该使用的图形是()。
Max = 0N = int(input())while(N): val = int(input()) if val > Max: #L1 Max = val N -= 1print(Max)- A.圆形框
- B.椭圆形框
- C.平行四边形框
- D.菱形框
- 3.单选题2 分执行以下 Python 代码后,输出的结果是?()
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]total = 0for row in matrix: for element in row: if element % 2 == 0: total += elementprint(total)- A.4
- B.10
- C.20
- D.25
- 4.单选题2 分执行以下 Python 代码,说法正确的是?()
tup = (1, [2, 3], 4)tup[1] = [5, 6]- A.元组被成功修改为(1, [5, 6], 4)
- B.代码可以执行,但元组内容未改变
- C.抛出TypeError异常
- D.元组被修改为(1, 2, 3, 4, 5, 6)
- 5.单选题2 分执行以下Python代码后,输出的结果是?()
words = ["hello", "world", "python"]result = [char for word in words for char in word if char in 'aeiou']print(len(result))- A.3
- B.4
- C.5
- D.6
- 6.单选题2 分函数定义def func(*args): pass中的*args会将传入的参数打包成什么类型?
- A.列表
- B.字典
- C.元组
- D.集合
- 7.单选题2 分在嵌套函数中,需要修改外层函数(非全局作用域)的变量,应使用哪个关键字?()
- A.global
- B.nonlocal
- C.local
- D.outer
- 8.单选题2 分执行以下 Python 代码后,输出的结果是?()
def process_data(data): result = [] for item in data: if item > 0: result.append(item * 2) elif item < 0: result.append(abs(item)) else: result.append(0) return resultoutput = process_data([-2, 0, 3, -1])print(sum(output))- A.12
- B.6
- C.8
- D.9
- 9.单选题2 分关于 lambda 匿名函数,以下描述正确的是?()
- A.lambda 匿名函数可以包含多个表达式,用分号分隔
- B.lambda 匿名函数必须有参数
- C.lambda 匿名函数可以接受多个参数,但只能有一个表达式
- D.lambda 匿名函数必须有return语句
- 10.单选题2 分文件 text.txt 的内容如下: Python is a programming language. Python is easy to learn. 以下程序统计单词 "Python" 在文件中出现的次数。Python 后面是空格或行尾,且不跟标点。请补全代码。()
count = 0with open("text.txt", "r") as f: content = f.________ # 补全代码 words = content.split() for word in words: if word == "Python": count += 1print("Python出现次数:", count)- A.readlines()
- B.read()
- C.readline()
- D.readlines
- 11.单选题2 分以下代码的时间复杂度是?()
def func(n): sum = 0 for i in range(n): for j in range(i): sum += j- A.O(1)
- B.O(n)
- C.O(n²)
- D.O(log n)
- 12.单选题2 分执行以下 Python 代码后,输出的结果是?()
print(1, end="") raise ValueError("x")except ValueError as e: print(2, end="")else: print(3, end="")finally: print(4, end="")- A.14
- B.124
- C.1234
- D.程序报错
- 13.单选题2 分以下代码使用插入排序对列表进行升序排序。空白处应填入?()
def insertion_sort_optimized(arr): n = len(arr) for i in range(1, n): key = arr[i] # 当前待插入元素 j = i - 1 while j >= 0 and arr[j] > key: arr[j + 1] = arr[j] # 元素后移 j -= 1 _______________ # 插入元素到正确位置- A.arr[j + 1] = key
- B.arr[j - 1] = key
- C.key = arr[j]
- D.arr[i] = key
- 14.单选题2 分阅读以下 Python 代码,下列说法正确的是?()
n = int(input())def is_palindrome(s): return s == s[::-1]max_palindrome = 0for i in range(10 ** (n - 1), 10 ** n): for j in range(i, 10 ** n): product = i * j if is_palindrome(str(product)) and product > max_palindrome: max_palindrome = productprint(max_palindrome)- A.找出所有 n 位数
- B.找出由两个 n 位数相乘得到的最大回文数
- C.找出所有回文数
- D.计算两个 n 位数乘积的最大值
- 15.单选题2 分以下代码实现了根据分数返回等级(A: 90-100, B: 80-89, C: 70-79, D: 60-69, F: 0-59)的功能,请选择正确的选项填入①②处。()
grade_map = {90: "A", 80: "B", 70: "C", 60: "D", 0: "F"}def get_grade(score): if score < 0 or score > 100: return "无效分数" for key in sorted(grade_map.keys(), reverse=True): if score >= key: return _____①_____score = int(input())grade = get_grade(score)print(f"分数{score}的等级是{_____②_____}")- A.① grade_map[score] ② grade
- B.① key ② get_grade(score)
- C.① grade_map[key] ② score
- D.① grade_map[key] ② grade
- 16.判断题2 分小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统。()
- 17.判断题2 分在 Python 语言中,一个集合可以作为另一个集合的元素。
- 18.判断题2 分执行以下 Python 代码后,输出的结果是<class 'set'>。
my_set = {i: j for i, j in zip([1, 2], [3, 4])}print(type(my_set)) - 19.判断题2 分执行以下 Python 代码后,输出的结果是20 10。
def func(a, b): a = a ^ b b = a ^ b a = a ^ b return a, ba, b = func(10, 20)print(a, b) - 20.判断题2 分执行以下 Python 代码后,输出的结果是[6, 7]。
print(list(filter(lambda x: x > 5, [3, 6, 7, 2]))) - 21.判断题2 分执行以下Python代码后,输出的结果是'789\n456'。
with open('test.txt', 'w') as f: f.write('123\n456')with open('test.txt', 'r+') as f: f.seek(0, 2) f.write('789') f.seek(0) print(repr(f.read())) - 22.判断题2 分下面这段程序的时间复杂度为平方阶 O(n)。
def func(n): for i in range(n): for j in range(n): if i % 2 == 0: - 23.判断题2 分执行以下 Python 代码后,会抛出异常ZeroDivisionError。
data = {'a': 1}index = int(input())print(data['b'] / index) - 24.判断题2 分在对列表进行排序时,sorted() 函数会返回一个新的排序后的列表,不修改原列表,而 sort() 方法会直接修改原列表,返回值为 None。
- 25.判断题2 分阅读以下递推算法的 Python 代码,执行后的输出结果是13。
a, b = 1, 2for i in range(3): a, b = b, a + bprint(b) - 26.编程题25 分试题名称:山之谷 时间限制:1.0 s 内存限制:512.0 MB 题目描述:现有一片山地,可以视为一个 N 行 M 列的网格图,第 i 行 j 列的海拔为 h_i,j。 如果一个单元格的海拔不高于其所有相邻单元格(相邻包括上、下、左、右、左上、右上、左下、右下,最多 8 个方向)的海拔,则称该单元格为山谷。 请你数一数该片山地中有多少山谷。 输入格式:第一行包含 2 个整数 N, M,表示山地的大小。 之后 N 行,每行包含 M 个整数 h_i,1, h_i,2, …, h_i,M,表示海拔。 输出格式:输出 1 行,包含 1 个整数 C,表示山谷的数量。 输入样例1:3 5 7 6 6 7 9 6 5 6 7 6 6 5 7 8 9 输出样例1:3 样例解释1:样例 1 如图所示,绿色单元格代表山谷: 数据范围:保证 1 ≤ N, M ≤ 100,1 ≤ h_i,j ≤ 10^5。

作答说明:按题目要求完成程序或作品;需要在线运行与自动判分时,可在站内选择「在线考试」。
- 27.编程题25 分试题名称:礼盒排序 时间限制:1.0 s 内存限制:512.0 MB 题目描述:商店推出了许多礼盒,每个礼盒中包含 k 件商品,每件商品都有一个价格。 现在需要对这些礼盒进行排序,排序规则如下: 1. 先按礼盒总价格从小到大排序; 2. 如果总价格相同,按礼盒中最贵商品的价格从小到大排序; 3. 如果仍然相同,按礼盒中最便宜商品的价格从小到大排序; 4. 如果仍然相同,按礼盒编号从小到大排序。 请输出排序后的礼盒编号。 输入格式:第一行包含两个整数 n 和 k,分别表示礼盒数量和每个礼盒中商品的数量。 接下来 n 行,每行包含 k 个整数,第 i 行表示第 i 个礼盒中各商品的价格。 输出格式:输出一行,包含排序后的礼盒编号(编号从 1 开始),用空格分隔。 输入样例1:4 3 3 5 2 4 1 5 2 2 4 3 4 3 输出样例1:3 4 2 1 样例解释1:4 个礼盒分别为: 编号 商品价格 总价 最大值 最小值 1 3 5 2 10 5 2 2 4 1 5 10 5 1 3 2 2 4 8 4 2 4 3 4 3 10 4 3 排序过程: 1. 按总价排序,3 号礼盒总价最小; 2. 其余总价均为 10,再按最大值排序,4 号最大值更小; 3. 1 号和 2 号最大值相同,再按最小值排序,2 号更小。 最终顺序为:3 4 2 1 数据范围:保证 1 ≤ n ≤ 10^3,1 ≤ k ≤ 10,商品价格 ≤ 10^4。
作答说明:按题目要求完成程序或作品;需要在线运行与自动判分时,可在站内选择「在线考试」。