万卷网> GESP认证 >Python > 2025年3月CCF—GESP(Python四级)编程能力等级认证试卷

2025年3月CCF—GESP(Python四级)编程能力等级认证试卷
四级 2025 2025-06-20 12:01:47 114

一、单选题

1.

以下哪个函数调用是合法的?( )

def func(a, b, c=0):
	print(a + b + c)
A.

func(1, b=2, 3)

B.

func(a=1, 2, c=3)

C.

func(1, 2)

D.

func(b=1, a=2, 3)

2.

一只青蛙要跳上 n 级台阶。它每次可以跳1阶、2阶或3阶。下列代码可以计算青蛙有多少种不同的跳跃方式可以到达第 n 阶,其中横线处填写的代码是?( )

def jump_ways(n):
	if n <= 3:
		return [0, 1, 2, 4][n]
	dp = [0] * (n + 1)
	dp[1], dp[2], dp[3] = 1, 2, 4
	for i in range(4, n + 1):
		dp[i] = _______________
	return dp[n]
A.

dp[i - 1] * 2

B.

dp[i - 3] * 3

C.

dp[i - 1] + dp[i - 2]

D.

dp[i - 1] + dp[i - 2] + dp[i - 3]

3.

以下代码的作用是?( )

with open(r"data.txt") as f:
	while True:
		line = f.readline()
		if not line:
			break
		print(line, end="")
A.

读取全部内容后一次性打印

B.

逐行读取并打印,保留原有的换行

C.

跳过空行打印内容

D.

倒序打印文件内容

4.

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

def append_value(value, container=[]):
	container.append(value)
	return container

result1 = append_value(1)
result2 = append_value(2)
result3 = append_value(3, [])
print(result1, result2, result3)
A.

[1] [2] [3]

B.

[3] [3] [3]

C.

[1] [1, 2] [3]

D.

[1, 2] [1, 2] [3]

5.

2025年春节有两件轰动全球的事件,一个是DeepSeek横空出世,另一个是贺岁片《哪吒2》票房惊人,入了全球票房榜。下面关于DeepSeek与《哪吒2》的描述成立的是( )。(2025.3四级)

A.

《哪吒2》是一款新型操作系统

B.

DeepSeek是深海钻探软件

C.

《哪吒2》可以生成新的软件

D.

DeepSeek可以根据《哪吒2》的场景生成剧情脚本

6.

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

lst = [{'num': i} for i in range(3)]
lst[1]['num'] = 99
print(lst)
A.

[{'num': 0}, {'num': 1}, {'num': 2}]

B.

[{'num': 0}, {'num': 99}, {'num': 2}]

C.

所有字典的 'num' 都变为 99

D.

报错

7.

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

def test():
	try:
		return "A"
	finally:
		return "B"


print(test())
A.

AB

B.

A

C.

B

D.

报错

8.

以下代码实现了哪种排序算法?( )

def sort(arr):
	for i in range(len(arr) - 1):
		min_idx = i
		for j in range(i + 1, len(arr)):
			if arr[j] < arr[min_idx]:
				min_idx = j
		arr[i], arr[min_idx] = arr[min_idx], arr[i]
A.

冒泡排序

B.

插入排序

C.

选择排序

D.

快速排序

9.

执行下面Python代码时,哪条调用会报错?( )

def func(a, *, b, c):
	pass
A.

func(1, b=2, c=3)

B.

func(1, 2, c=3)

C.

func(a=1, b=2, c=3)

D.

func(1, c=3, b=2)

10.

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

def swap(a, b):
	a, b = b, a
	return a, b

x, y = 1, 2
swap(x, y)
print(x, y)
A.

1 2

B.

2 1

C.

(2, 1)

D.

报错

11.

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

def outer():
	n = 0
	
	def inner():
		nonlocal n
		n += 1
		return n

	return inner


f = outer()
print(f(), f(), f())
A.

1 2 3

B.

1 1 1

C.

3 3 3

D.

报错

12.

对整型变量N,如果它能够同时被3和5整出,则输出 N是含有至少两个质因数 。如果用流程图来描述处理过程,则输出语句应该在哪种图形框中( )。(2025.3四级)

A.

圆形框

B.

椭圆形框

C.

平行四边形框

D.

菱形框

13.

下列代码可将24小时制的"HH:MM"时间字符串转换为从午夜(00:00)开始经过的总分钟数(注:此分钟数为正整数),其中横线处填写的代码是?( )

time_str = "8:30"
h, m = map(__________) # 横线在map的参数部分
total_min = h * 60 + m
print(total_min) # 应输出510
A.

int, time_str.split(':')

B.

int, time_str.split(' ')

C.

float, time_str.split(':')

D.

str, time_str.split(':')

14.

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

keys = ['a', 'b']
values = [[1], (2,)]
d = {k: v for k, v in zip(keys, values)}
d['a'].append(3)
print(d['a'])
A.

[1]

B.

(2,)

C.

[1, 3]

D.

报错

15.

以下哪个函数调用会返回 [2, 4, 6]?( )

def process(lst, func):
	return [func(x) for x in lst]

nums = [1, 2, 3]
A.

process(nums, lambda x: x % 2)

B.

process(nums, lambda x: x + 1)

C.

process(nums, lambda x: x ** 2)

D.

process(nums, lambda x: x * 2)

二、判断题

1.

执行下面Python代码后,调用函数func可以得到一个列表类型的数据。

def func():
	return [1, 2],


result = func()
print(type(result))
A.正确 B.错误
2.

下面这段程序的时间复杂度为平方阶 。

def func(n):
	for i in range(n):
		for j in range(n):
			print(i, j)
A.正确 B.错误
3.

C++、Python都是高级编程语言,它们每条语句的执行最终都要通过机器指令来完成。( )(2025.3四级)

A.正确 B.错误
4.

在函数定义中, **kwargs 必须位于参数列表的最后。( )

A.正确 B.错误
5.

Python中允许在同一个 with 语句中打开多个文件。

with open('a.txt', 'r') as f1, open('b.txt', 'w') as f2:
	data = f1.read()
	f2.write(data)
A.正确 B.错误
6.

Python代码尝试以读取模式("r")打开不存在的文件会引发 FileNotFoundError 异常。

A.正确 B.错误
7.

执行下面Python代码,会触发SyntaxError异常,但不会输出 Error 。

try:
	print("Hello"
except SyntaxError:
	print("Error")
A.正确 B.错误
8.

执行下面Python代码后,会输出 [4, 6] 。

print(list(map(sum, zip([1, 2], [3, 4]))))
A.正确 B.错误
9.

对5个不同的数据元素进行直接插入排序,最多需要比较9次。

A.正确 B.错误
10.

下列程序用于统计字符串中元音字母(a, e, i, o, u)的数量。

s = "hello world"
vowels = "aeiou"
count = sum(1 for c in s if c in vowels)
print(count)
A.正确 B.错误

三、编程题

1.

二阶矩阵

题目描述

小 A 有一个n 行m 列的矩阵 A。

小 A 认为一个2*2 的矩阵D 是好的,当且仅当D1,1*D2,2=D1,2*D2,1。其中  Di,j表示矩阵 D的第 i行第 j列的元素。

小 A 想知道 A中有多少个好的子矩阵。

输入格式

第一行,两个正整数n,m 。

接下来 n行,每行 m个整数 Ai,1 , Ai,2 …… , Ai,m。

输出格式

一行,一个整数,表示A 中好的子矩阵的数量。


输入样例 

3 4

1 2 1 0

2 4 2 1

0 3 3 0

输出样例

2

样例解释

样例中的好的子矩阵如下:

数据范围

对于所有测试点,保证  1≤n≤5 ,1≤m≤500,    100≤ Ai,j≤100 。

2.

荒地开垦

时间限制:3.0 s

内存限制:512.0 MB

题面描述

小杨有一大片荒地,可以表示为一个 n行 m列的网格图。

小杨想要开垦这块荒地,但荒地中一些位置存在杂物,对于一块不存在杂物的荒地,该荒地可以开垦当且仅当其上下左右四个方向相邻的格子均不存在杂物。

小杨可以选择至多一个位置,清除该位置的杂物,移除杂物后该位置变为荒地。小杨想知道在清除至多一个位置的杂物的情况下,最多能够开垦多少块荒地。

输入格式

第一行包含两个正整数n,m ,含义如题面所示。

之后 n行,每行包含一个长度为m 且仅包含字符 . 和 # 的字符串。如果为 . ,代表该位置为荒地,如果为 # ,代表该位置为杂物。

输出格式

输出一个整数,代表在清除至多一个位置的杂物的情况下,最多能够开垦的荒地块数。


输入样例

3 5
.....
.#..#
.....

输出样例

11

样例解释

移除第二行从左数第二块空地的杂物后:

.....
....#
.....

第一行从左数前 4块荒地,第二行从左数前3 块荒地,第三行从左数前4 块荒地,均可开垦,4+3+4=11。

数据范围

对于全部数据,保证有 1≤n,m≤1000。

公众号
客服 反馈
顶部