返回试卷目录

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

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

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

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

  1. 1.单选题2 分
    2026年春节联欢晚会上一个武术表演节目《武 BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备( )。
    • A.用于检测重心的重力传感器
    • B.预装的AI算法程序
    • C.接收动作指令的遥控器
    • D.拍摄其他机器人的摄像头
  2. 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. 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. 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. 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. 6.单选题2 分
    函数定义def func(*args): pass中的*args会将传入的参数打包成什么类型?
    • A.列表
    • B.字典
    • C.元组
    • D.集合
  7. 7.单选题2 分
    在嵌套函数中,需要修改外层函数(非全局作用域)的变量,应使用哪个关键字?()
    • A.global
    • B.nonlocal
    • C.local
    • D.outer
  8. 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. 9.单选题2 分
    关于 lambda 匿名函数,以下描述正确的是?()
    • A.lambda 匿名函数可以包含多个表达式,用分号分隔
    • B.lambda 匿名函数必须有参数
    • C.lambda 匿名函数可以接受多个参数,但只能有一个表达式
    • D.lambda 匿名函数必须有return语句
  10. 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. 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. 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. 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. 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. 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. 16.判断题2 分
    小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统。()
  17. 17.判断题2 分
    在 Python 语言中,一个集合可以作为另一个集合的元素。
  18. 18.判断题2 分
    执行以下 Python 代码后,输出的结果是<class 'set'>。
    my_set = {i: j for i, j in zip([1, 2], [3, 4])}print(type(my_set))
  19. 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. 20.判断题2 分
    执行以下 Python 代码后,输出的结果是[6, 7]。
    print(list(filter(lambda x: x > 5, [3, 6, 7, 2])))
  21. 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. 22.判断题2 分
    下面这段程序的时间复杂度为平方阶 O(n)。
    def func(n):    for i in range(n):        for j in range(n):            if i % 2 == 0:
  23. 23.判断题2 分
    执行以下 Python 代码后,会抛出异常ZeroDivisionError。
    data = {'a': 1}index = int(input())print(data['b'] / index)
  24. 24.判断题2 分
    在对列表进行排序时,sorted() 函数会返回一个新的排序后的列表,不修改原列表,而 sort() 方法会直接修改原列表,返回值为 None。
  25. 25.判断题2 分
    阅读以下递推算法的 Python 代码,执行后的输出结果是13。
    a, b = 1, 2for i in range(3):    a, b = b, a + bprint(b)
  26. 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。
    第 26 题配图

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

  27. 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。

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