2026年3月 GESP认证 Python编程 四级真题试卷
剩余时间 --:--:--
单选题 共 15 题
1.

2026年春节联欢晚会上一个武术表演节目《武 BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备(  )

2.

下面代码用来找出输入的 N 个正整数中最大的一个。如果将代码段用流程图来表示,则 L1 标记的代码行应该使用的图形是( )。

1 Max = 0
2 N = int(input())
3
4 while(N):
5  val = int(input())
6  if val > Max: #L1
7   Max = val
8  N -= 1
9
10 print(Max)


3.

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

1 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
2 total = 0
3 for row in matrix:
4  for element in row:
5   if element % 2 == 0:
6    total += element
7 print(total)
4.

执行以下 Python 代码,说法正确的是?( )

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

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

1 words = ["hello", "world", "python"] 
2 result = [char for word in words for char in word if char in 'aeiou'] 
3 print(len(result))
6.

函数定义 def func(*args): pass 中的 *args 会将传入的参数打包成什么类型?

7.

在嵌套函数中,需要修改外层函数(非全局作用域)的变量,应使用哪个关键字?( )

8.

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

1 def process_data(data):
2  result = []
3  for item in data:
4   if item > 0:
5    result.append(item * 2)
6   elif item < 0:
7    result.append(abs(item))
8   else:
9    result.append(0)
10  return result
11
12
13 output = process_data([-2, 0, 3, -1])
14 print(sum(output))


9.

关于 lambda 匿名函数,以下描述正确的是?( )

10.

文件text.txt 的内容如下:

1 Python is a programming language. 
2 Python is easy to learn.

以下程序统计单词 "Python" 在文件中出现的次数。Python 后面是空格或行尾,且不跟标点。请补全代码。( )

1 count = 0
2 with open("text.txt", "r") as f:
3  content = f.________ # 补全代码
4  words = content.split()
5  for word in words:
6   if word == "Python":
7    count += 1
8 print("Python出现次数:", count)


11.

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

1 def func(n):
2  sum = 0
3  for i in range(n):
4   for j in range(i):
5    sum += j


12.

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

1 try:
2  print(1, end="")
3  raise ValueError("x")
4 except ValueError as e:
5  print(2, end="")
6 else:
7  print(3, end="")
8 finally:
9  print(4, end="")


13.

以下代码使用插入排序对列表进行升序排序。空白处应填入?( )

1 def insertion_sort_optimized(arr):
2  n = len(arr)
3  for i in range(1, n):
4   key = arr[i] # 当前待插入元素
5   j = i - 1
6   while j >= 0 and arr[j] > key:
7    arr[j + 1] = arr[j] # 元素后移
8    j -= 1
9   _______________ # 插入元素到正确位置


14.

阅读以下 Python 代码,下列说法正确的是?( )

1 n = int(input())
2
3 def is_palindrome(s):
4  return s == s[::-1]
5
6 max_palindrome = 0
7 for i in range(10 ** (n - 1), 10 ** n):
8  for j in range(i, 10 ** n):
9   product = i * j
10   if is_palindrome(str(product)) and product > max_palindrome:
11    max_palindrome = product
12 print(max_palindrome)
15.

以下代码实现了根据分数返回等级(A: 90-100, B: 80-89, C: 70-79, D: 60-69, F: 0-59)的功能,请选择正确的选项填入①②处。( )

1 grade_map = {90: "A", 80: "B", 70: "C", 60: "D", 0: "F"}
2
3 def get_grade(score):
4  if score < 0 or score > 100:
5   return "无效分数"
6  for key in sorted(grade_map.keys(), reverse=True):
7   if score >= key:
8    return _____①_____
9
10 score = int(input())
11 grade = get_grade(score)
12 print(f"分数 {score} 的等级是 {_____②_____}")


判断题 共 10 题
1.

小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统(  )

2.

Python 语言中,一个集合可以作为另一个集合的元素。

3.

执行以下 Python 代码后,输出的结果是 <class 'set'>

1 my_set = {i: j for i, j in zip([1, 2], [3, 4])} 
2 print(type(my_set))


4.

执行以下 Python 代码后,输出的结果是 20 10

1 def func(a, b):
2  a = a ^ b
3  b = a ^ b
4  a = a ^ b
5  return a, b
6
7
8 a, b = func(10, 20)
9 print(a, b)


5.

执行以下 Python 代码后,输出的结果是 [6, 7]

1 print(list(filter(lambda x: x > 5, [3, 6, 7, 2])))
6.

执行以下Python代码后,输出的结果是 '789\n456'

1 with open('test.txt', 'w') as f:
2  f.write('123\n456')
3 with open('test.txt', 'r+') as f:
4  f.seek(0, 2)
5  f.write('789')
6  f.seek(0)
7  print(repr(f.read()))
7.

下面这段程序的时间复杂度为平方阶O(n)

1 def func(n):
2  for i in range(n):
3   for j in range(n):
4    if i % 2 == 0:
5     break


8.

执行以下 Python 代码后,会抛出异常 ZeroDivisionError

1 data = {'a': 1} 
2 index = int(input()) 
3 print(data['b'] / index)
9.

在对列表进行排序时, sorted() 函数会返回一个新的排序后的列表,不修改原列表,而 sort() 方法会直 接修改原列表,返回值为 None

10.

阅读以下递推算法的 Python 代码,执行后的输出结果是 13

1 a, b = 1, 2
2 for i in range(3):
3  a, b = b, a + b
4 print(b)


问答题 共 2 题
1.

试题名称:山之谷 

时间限制1.0 s 

内存限制512.0 MB 

3.1.1 题目描述 

现有一片山地,可以视为一个N行M列的网格图,第i行j列的海拔为hij。 

如果一个单元格的海拔不高于其所有相邻单元格(相邻包括上、下、左、右、左上、右上、左下、右下,最多8个方向)的海拔,则称该单元格为山谷。 

请你数一数该片山地中有多少山谷。

3.1.2 输入格式 

第一行包含2个整数N,M表示山地的大小。 

之后N行,每行包含M个整数hi,1,hi,2,…,hi,m表示海拔。 

3.1.3 输出格式 

输出 1 行,包含 1 个整数C,表示山谷的数量。 

3.1.4 样例 

3.1.4.1 输入样例 

3.1.4.2 输出样例 

3.1.5 样例解释 

样例 1 如图所示,绿色单元格代表山谷:

3.1.6 数据范围 

保证1≤N,M≤100,1≤hij≤105

2.

试题名称:礼盒排序 

时间限制1.0 s 

内存限制512.0 MB 

3.2.1 题目描述 

商店推出了许多礼盒,每个礼盒中包含k件商品,每件商品都有一个价格。 

现在需要对这些礼盒进行排序,排序规则如下: 

1. 先按礼盒总价格从小到大排序; 

2. 如果总价格相同,按礼盒中最贵商品的价格从小到大排序; 

3. 如果仍然相同,按礼盒中最便宜商品的价格从小到大排序; 

4. 如果仍然相同,按礼盒编号从小到大排序。 请输出排序后的礼盒编号。 

3.2.2 输入格式 

第一行包含两个整数n和k,分别表示礼盒数量和每个礼盒中商品的数量。 

接下来n行,每行包含k个整数,第i行表示第i个礼盒中各商品的价格。

3.2.3 输出格式 

输出一行,包含排序后的礼盒编号(编号从1开始),用空格分隔。 

3.2.4 样例 

3.2.4.1 输入样例 

3.2.4.2 输出样例

 

3.2.5 样例解释 

4 个礼盒分别为: 

排序过程: 

1. 按总价排序,3号礼盒总价最小; 

2. 其余总价均为 10,再按最大值排序,4号最大值更小; 

3. 1号和2号最大值相同,再按最小值排序,2号更小。 

最终顺序为:3 4 2 1 

3.2.6 数据范围 

保证1≤n≤103,1≤k≤10 ,商品价格≤104

C++ 编辑器
输入
输出