返回试卷目录

需要电子版时点「打印 / 保存为 PDF」,在打印对话框的「目标打印机」里选择「另存为 PDF」即可下载。登录后可下载,每天 10 次

GESP Python 编程四级 · 2026 年 9 月卷

GESP · Python · 共 27 题 · 满分 100 分

姓名:____________日期:____________得分:____________

  1. 1.单选题2 分

    第二届世界人形机器人运动会开幕式上,机器人方阵通过控制程序来完成整场表演。表演前,工程师们使用集成开发环境(IDE)编写并调试方阵的控制程序。下列关于 IDE 功能的描述,错误的是( )。

    • A.可以提供代码自动补全,提高编程效率
    • B.可以提供辅助信息,帮助排查程序逻辑错误
    • C.可以直接控制机器人电机转动
    • D.支持语法高亮,使代码更易阅读
  2. 2.单选题2 分

    计算机 CPU 中的高速缓冲存储器(Cache)主要为提升系统性能而设计。下列关于 Cache 的说法中正确的是( )。

    • A.Cache 的容量比主存大,速度比主存快
    • B.Cache 通常用于暂存 CPU 频繁访问的数据
    • C.Cache 中的数据断电后不会丢失,属于非易失性存储器
    • D.Cache 的访问速度比 CPU 寄存器还要快
  3. 3.单选题2 分

    执行下面 Python 代码后,输出的结果是?( ) 1 original = [{'key': 'value'}, [4, 5, 6]] 2 new = original.copy() 3 new[0]['key'] = 'new_value' 4 new[1].append(7) 5 print(original[0]['key'], original[1][-1])

    • A.value 6
    • B.new_value 7
    • C.value 7
    • D.new_value 6
  4. 4.单选题2 分

    执行下面 Python 代码后,输出的结果是?( ) 1 nested = [[1, 2], [3, 4], [5, 6]] 2 flat = [num for sublist in nested for num in sublist if num % 2 == 0] 3 print(flat)

    • A.[2, 4, 6]
    • B.[1, 3, 5]
    • C.[1, 2, 3, 4, 5, 6]
    • D.[2, 4]
  5. 5.单选题2 分

    执行下面 Python 代码后,输出的结果是?( ) 1 def func(d): 2 d = {'new': 'value'} 3 return d 4 data = {'old': 'data'} 5 func(data) 6 print(data)

    • A.{}
    • B.{'new': 'value'}
    • C.{'old': 'data'}
    • D.报错
  6. 6.单选题2 分

    关于以下代码,说法正确的是?( ) 1 def process(a: int, b: str = "default") -> str: 2 return b * a

    • A.调用函数时必须为形参a传递一个整数值
    • B.调用函数时不能省略对形参b的传参
    • C.函数返回值必须是字符串类型
    • D.参数类型注解在运行时不会强制检查类型
  7. 7.单选题2 分

    执行下面 Python 代码后,输入 150 165 135 133 输出的结果是?( ) 1 H1, H2, H3, H4 = map(int, input().split()) 2 print(min([H2, H3, H4], key=lambda x: (abs(x - H1), x)))

    • A.150
    • B.165
    • C.135
    • D.133
  8. 8.单选题2 分

    以下哪种文件打开模式允许同时读写文件,且文件指针从文件开头开始?( )

    • A.'r'
    • B.'w'
    • C.'a'
    • D.'r+'
  9. 9.单选题2 分

    以下代码的时间复杂度是?( ) 1 n = int(input()) 2 f = [0] * (n + 1) 3 f[0] = 0 4 f[1] = 1 5 for i in range(2, n + 1): 6 f[i] = f[i - 1] + f[i - 2]

    • A.O(n)
    • B.O(n²)
    • C.O(1)
    • D.O(log(n))
  10. 10.单选题2 分

    关于try-except-else-finally结构,以下说法正确的是?( )

    • A.如果try块中有return语句,finally块将不会执行
    • B.finally块通常用于释放资源,如关闭文件
    • C.一个try块只能对应一个except块
    • D.如果try块中发生了异常,那么else块也会执行
  11. 11.单选题2 分

    执行下面 Python 代码后,输出的结果是?( ) 1 a = [1, 1] 2 for i in range(2, 10): 3 a.append(a[i - 1] + a[i - 2]) 4 print(a[8])

    • A.89
    • B.55
    • C.34
    • D.21
  12. 12.单选题2 分

    执行下面 Python 代码后,输出的结果是?( ) 1 students = [("Alice", "B", 25), ("Bob", "A", 23), ("Cathy", "A", 22)] 2 sorted_students = sorted(students, key=lambda x: (x[1], x[2])) 3 print([s[0] for s in sorted_students])

    • A.["Cathy", "Alice", "Bob"]
    • B.["Bob", "Cathy", "Alice"]
    • C.["Alice", "Bob", "Cathy"]
    • D.["Cathy", "Bob", "Alice"]
  13. 13.单选题2 分

    以下代码实现了根据交通灯颜色返回动作(停、等、行)的功能,以下哪个选项是正确的?( ) 1 def traffic_action(color): 2 actions = {"红": "停", "黄": "等", "绿": "行"} 3 if color in actions: 4 return _____①_____ 5 else: 6 return "无效颜色" 7 color = input("输入交通灯颜色: ") 8 action = traffic_action(color) 9 print(f"颜色{color}对应的动作是: {_____②_____}")

    • A.① actions[color] ② action
    • B.① actions[color] ② color
    • C.① actions.get(color) ② actions
    • D.① actions.get(color, "无效颜色") ② color
  14. 14.单选题2 分

    文件 text.txt 的内容如下: Python is a programming language. Python is easy to learn. Many people use Python for data analysis and web development. Python has a large community and many libraries. 以下代码实现了统计文件中单词 Python 出现的次数的功能,以下哪个选项是正确的?( )。 1 count = 0 2 with open("text.txt", "r") as f: 3 content = f._____①_____ 4 words = content._____②_____ 5 for word in words: 6 if word == "Python": 7 count += 1 8 print(f"Python出现次数:{count}")

    • A.① readlines() ② split()
    • B.① read() ② split()
    • C.① read() ② strip()
    • D.① readlines() ② strip()
  15. 15.单选题2 分

    以下代码实现了给定一个 n × m 的整数矩阵,能找出所有 2 × 2 子矩阵中,元素最大平均值的功能,以下哪个选项是正确的?( ) 1 n, m = map(int, input().split()) 2 matrix = [list(map(int, input().split())) for _ in range(n)] 3 max_avg = float("-inf") 4 for i in range(_____①_____): 5 for j in range(_____②_____): 6 # 计算当前2×2子矩阵的和 7 total = matrix[i][j] + matrix[i][j + 1] + matrix[i + 1][j] + matrix[i + 1][j + 1] 8 avg = total / 4.0 9 if avg > max_avg: 10 max_avg = avg 11 print(f"{max_avg:.2f}")

    • A.① n-1,② m-1
    • B.① n-2,② m-2
    • C.① n,② m
    • D.① n-1,② m-2
  16. 16.判断题2 分

    Python 程序执行input()函数时通常是使用键盘等输入设备来输入某个变量的值。

  17. 17.判断题2 分

    执行下面 Python 代码后,输出结果为[1, 2]。 1 a = [1, 2] 2 b = (a,) 3 a.append(3) 4 print(b[0])

  18. 18.判断题2 分

    执行下面 Python 代码后,输出结果为[0,1,4] [0,1,4]。 1 gen = (i ** 2 for i in range(3)) 2 print(list(gen), list(gen))

  19. 19.判断题2 分

    执行下面 Python 代码后,输出结果为20。 1 num = 5 2 def test(): 3 num = 10 4 global num 5 num = 20 6 test() 7 print(num)

  20. 20.判断题2 分

    在 Python 中,如果一个函数内部定义了一个嵌套函数,那么嵌套函数只能在外部函数内部被调用,不能在外部函数之外直接调用。但是嵌套函数若被作为返回值、赋给变量等,外部函数之外也可以通过该引用调用。

  21. 21.判断题2 分

    执行下面 Python 代码后,oldest的值为{'name': 'Alice', 'age': 30}。 1 data = [{'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 25}] 2 oldest = max(data, key=lambda d: d['age'])

  22. 22.判断题2 分

    在 Python 中,f.readlines()与list(f)的作用完全相同,都会将文件的所有行读入一个列表,并保留每行已有的换行符,即下列两段代码的输出结果相同。 1 with open("test.txt", "r") as f: 2 print(f.readlines()) 3 with open("test.txt", "r") as f: 4 print(list(f))

  23. 23.判断题2 分

    执行下面 Python 代码会抛出 KeyError 异常。 1 print({}.get('key'))

  24. 24.判断题2 分

    对一组数据 [5, 2, 6, 4, 8, 1, 7, 3] 使用选择排序的方法按从小到大的顺序进行排序,则第 2 轮排序过后的结果是 [1, 2, 6, 4, 8, 5, 7, 3]。

  25. 25.判断题2 分

    以下 Python 代码使用递推算法实现了计算正整数 n 的二进制表示中包含 1 个数的功能。 1 def popcount(n): 2 cnt = [0] * (n + 1) 3 for i in range(1, n + 1): 4 cnt[i] = cnt[i >> 1] + (i & 1) 5 return cnt[n]

  26. 26.编程题25 分

    试题名称:新汉诺塔 时间限制:1.0 s 内存限制:512.0 MB 题目描述:汉诺塔问题是最经典的递推问题之一: 有三个可以放圆盘柱子,编号为 A、B 和 C。 开始时柱子 A 上套着 n 个圆盘,它们从上到下按照从小到大的顺序排列。 我们的任务是要把这 n 个圆盘移到柱子 C 上,并保持它们的原有顺序不变。 在移动圆盘的过程中,需要遵守以下规则: 1. 圆盘只能从一根柱子顶部拿出,从另一根柱子顶部放入。 2. 每次只能移动一个圆盘。 3. 小圆盘必须时刻位于大圆盘之上。 小杨在学习了汉诺塔问题后,决定添加一个新规则: 4. 每一次移动,圆盘只能从 A 移动到 B,从 B 移动到 C,或者从 C 移动到 A;其它移动是不允许的。 在新规则下,给定圆盘数量 n,试问最少移动步数是多少? 输入格式:输入一个正整数 n,表示圆盘的数量。 输出格式:输出一个整数,表示在新规则下将 n 个圆盘从 A 移动到 C 所需的最少移动步数。 输入样例1:2 输出样例1:7 样例解释1:以下步骤是最佳的(编号为 1 的是小盘,为 2 的是大盘): 1. 将 1 从 A 移动到 B; 2. 将 1 从 B 移动到 C; 3. 将 2 从 A 移动到 B; 4. 将 1 从 C 移动到 A; 5. 将 2 从 B 移动到 C; 6. 将 1 从 A 移动到 B; 7. 将 1 从 B 移动到 C。 可以证明没有更少步骤可以完成这个任务。 输入样例2:3 输出样例2:21 数据范围:对于所有数据,n ≤ 20。

    作答说明:按题目要求完成程序或作品;需要在线运行与自动判分时,可在站内选择「在线考试」。

  27. 27.编程题25 分

    试题名称:有序网格 时间限制:1.0 s 内存限制:512.0 MB 题目描述:小 A 有一个 n 行 m 列格子组成的二维网格,从上到下依次是第 1 行到第 n 行,从左到右依次是第 1 列到第 m 列。每个格子里有一个数字,第 i 行第 j 列的格子里的数字是 a_{i,j}。 小 A 想让二维网格变得有序,因此他先对每一行从左到右按升序排序,再对每一列从上到下按升序排序。以下是一个先完成行排序再完成列排序的例子: 原始网格: 1 3 2 5 6 2 4 4 5 4 1 3 每行升序排序后: 1 2 3 5 2 4 4 6 1 3 4 5 每列升序排序后: 1 2 3 5 1 3 4 5 2 4 4 6 小 A 想知道二维网格经过以上排序后的结果。你能编写程序帮助他吗? 输入格式:第一行,两个正整数 n, m,分别二维网格的行数与列数。 接下来 n 行,每行 m 个整数 a_{i,1}, …, a_{i,m},表示二维网格种的数字。 输出格式:输出 n 行,每行 m 个整数,表示二维网格先完成行排序再完成列排序后的结果。 输入样例1: 3 2 6 5 4 3 2 1 输出样例1: 1 2 3 4 5 6 输入样例2: 3 4 1 3 2 5 6 2 4 4 5 4 1 3 输出样例2: 1 2 3 5 1 3 4 5 2 4 4 6 数据范围:对于所有测试点,保证 2 ≤ n ≤ 10,2 ≤ m ≤ 10,1 ≤ a_{i,j} ≤ 100。

    作答说明:按题目要求完成程序或作品;需要在线运行与自动判分时,可在站内选择「在线考试」。