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

2024年9月CCF—GESP(Python四级)编程能力等级认证试卷
四级 2024 2025-02-20 16:11:57 35

一、单选题

1.

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

tuples = [(1, 'apple'), (2, 'banana'), (0, 'cherry')]
sorted_tuples = sorted(tuples, key=lambda x: x[1])
print(sorted_tuples)
A.

[(1, ‘apple’), (0, ‘cherry’), (2, ‘banana’)]

B.

[(2, ‘banana’), (1, ‘apple’), (0, ‘cherry’)]

C.

[(0, ‘cherry’), (1, ‘apple’), (2, ‘banana’)]

D.

[(1, ‘apple’), (2, ‘banana’), (0, ‘cherry’)]

2.

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

def func(n):
	return len([num for num in range(n) if num % 2 == 0])
print(func(20))


A.

8

B.

10

C.

11

D.

15

3.

文件numbers.txt的内容如下:

5
12
7
15
3
20
8

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

def func(file_path, threshold):
	lst = []
	with open(file_path) as file:
		for line in file:
			number = int(line.strip())
			if number > threshold:
				lst.append(number)
	return lst
	
file_path = 'numbers.txt'
threshold = 12
selected_numbers = func(file_path, threshold)
print(selected_numbers)
A.

[15, 20]

B.

[12, 15, 20, 8]

C.

[5, 12, 7, 15, 20, 8]

D.

[12, 15, 20]

4.

以下Python代码实现的排序算法的时间复杂度是?( )

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


A.

O(n)

B.

O(2n)

C.

O(n2)

D.

O(n3)

5.

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

my_list = [1, 2, [3, 4]]
my_list[2].extend([5, 6])
print(my_list)
A.

[1, 2, 5, 6]

B.

[1, 2, [3, 4]]

C.

[1, 2, [3, 4, 5, 6]]

D.

[1, 2, [3, 4, [5, 6]]]

6.

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

def tpADD(tpl):
	tpl = tpl +(5,6)
	return tpl
	
tp = (1,2,3)
tpADD(tp)
print(tp,tpADD(tp))


A.

(1, 2, 3, 5, 6, 5, 6) (1, 2, 3, 5, 6, 5, 6)

B.

(1, 2, 3, 5, 6) (1, 2, 3, 5, 6)

C.

(1, 2, 3) (1, 2, 3, 5, 6)

D.

(1, 2, 3) (1, 2, 3)

7.

IPv4版本的因特网总共有( )个A类地址网络。

A.

65000

B.

200万

C.

126

D.

128

8.

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

def func(*args):
	return ''.join(args)
print(func('Hello', 'World'))


A.

HelloWorld

B.

Hello World

C.

“Hello” “World”

D.

抛出异常

9.

假设你正在爬楼梯,每次可以爬1阶或2阶。给定楼梯的阶数 n ,计算有多少种不同的方法可以爬到楼顶。以下Python代码的横线处应该填写?( )

def climbStairs(n):
	if n == 1:
		return 1
	if n == 2:
		return 2
		
	# 初始化前两阶楼梯的数据
	dp = [0] * (n + 1)
	dp[1] = 1
	dp[2] = 2
	
	# 从第3阶楼梯开始,计算每一阶楼梯的爬法数量
	for i in range(3, n + 1):
		__________
	return dp[n]
A.

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

B.

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

C.

dp[i] = 2 * dp[i - 2]

D.

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

10.

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

def func(d):
	d['a'] = 5
	
c = {'a': 1, 'b': 2}
func(c)
print(c)
A.

{‘a’: 1, ‘b’: 2}

B.

{‘b’: 2}

C.

{‘a’: 5, ‘b’: 2}

D.

抛出异常

11.

据有关资料,山东大学于1972年研制成功DJL-1计算机,并于1973年投入运行,其综合性能居当时全国第三位。DJL-1计算机运算控制部分所使用的磁心存储元件由磁心颗粒组成,设计存贮周期为2μs(微秒)。那么该磁心存储元件相当于现代计算机的(2024.9-4)( )。

A.

内存

B.

磁盘

C.

CPU

D.

显示器

12.

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

x = 5

def foo():
	def bar():
		global x
		x = 10
		
	bar()
	print(x, end="#")
	
foo()
print(x, end="#")
A.

5#5#

B.

10#5#

C.

5#10#

D.

10#10#

13.

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

try:
	result = 10 / int('a')
except ValueError:
	print("10", end="#")
else:
	print("20", end="#")
finally:
	print("30", end="#")


A.

10#30#

B.

10#

C.

20#

D.

30#

14.

执行下面Python代码后,会发生什么?( )

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


A.

my_tuple变为(1, 2, (5, 6))

B.

代码正常执行,没有变化

C.

抛出ValueError异常

D.

抛出TypeError异常

15.

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

def func(lst):
	lst.append(10)
	return lst
	
lstA = [1,2,3]

func(lstA)
print(lstA,func(lstA))


A.

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

B.

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

C.

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

D.

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

二、判断题

1.

try-except-else-finally异常处理结构中,只有try程序段中的语句没有异常,else程序段中的语句才会得到执行。

A.正确 B.错误
2.

在Python程序中,如果自定义函数内没有return语句或者return语句不带任何返回值,那么该函数的返回值为False。

A.正确 B.错误
3.

下面这段程序的时间复杂度为线性阶O(n)。( )

def func(n):
	i = 0
	while i ** 2 < n:
		i += 1
A.正确 B.错误
4.

在Python程序中,自定义函数可以定义在主程序代码的前面,也可以定义在主程序代码的后面,都不会发生错误。( )

A.正确 B.错误
5.

'w’可以作为open()函数的参数,表示以写的方式打开文件,若文件不存在,则会抛出异常。

A.正确 B.错误
6.

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

A.正确 B.错误
7.

执行下面Python代码后,输出的结果为(0, 0)。

lst = [(x, x**2) for x in range(-5, 6)]
a = min(lst, key=lambda x: abs(x[1]))
print(a)


A.正确 B.错误
8.

小杨最近开始学习C++编程,老师说C++是一门面向对象的编程语言,也是一门高级语言。(2024.9-4)( )

A.正确 B.错误
9.

在Python中表达式 {1, 3, 5} & {2, 4, 6} == {} 的值为True。

A.正确 B.错误
10.

Python中避免使用反斜线 \ 指定文件路径时出错,如 C:\test\numbers.txt ;常常使用正斜线 / 或者双反斜线 \ 。

A.正确 B.错误

三、编程题

1.

黑白方块

时间限制:1.0 s

内存限制:512.0 MB

题面描述

小杨有一个n行m列的网格图,其中每个格子要么是白色,要么是黑色。

小杨想知道网格图中是否存在一个满足如下条件的子矩形:

子矩形由 4 行 4 列组成;

子矩形的第 1 行 和第 4 行只包含白色格子;

对于子矩形的第 2 行 和第 3 行,只有第 1 个和第 4 个格子是白色的,其余格子都是黑色的;

请你编写程序帮助小杨判断。

输入格式

第一行包含一个正整数t,代表测试用例组数。

接下来是t组测试用例。对于每组测试用例,一共n+1 行。

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

之后n行,每行一个长度为m的01串,代表网格图第i行格子的颜色,如果为0,则对应格子为白色,否则为黑色。

输出格式

对于每组测试用例,如果存在,输出 Yes,否则输出 No。


输入样例

3
1 4
0110
5 5
00000
01100
01100
00001
01100
5 5
00000
01100
01110
00001
01100

输出样例

No
Yes
No

满足条件的子矩形形如:

0000
0110
0110
0000

对于全部数据,保证有1≤t≤10,1≤n,m≤100。

2.

区间排序

时间限制:1.0 s

内存限制:512.0 MB

题面描述

小杨有一个包含n个正整数的序列a。

小杨计划对序列进行多次升序排序,每次升序排序小杨会选择一个区间[l,r](l≤r) 并对区间内所有数字,即al,al+1,...,ar进行升序排序。每次升序排序会在上一次升序排序的结果上进行。

小杨想请你计算出多次升序排序后的序列。

输入格式

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

第二行包含n个正整数a1,a2,...,an,代表序列。

第三行包含一个正整数q,代表排序次数。

之后q行,每行包含两个正整数li,ri,代表将区间[li,ri] 内所有数字进行升序排序。

输出格式

输出一行包含n个正整数,代表多次升序排序后的序列。


输入样例

5
3 4 5 2 1
3
4 5
3 4
1 3

输出样例

1 3 4 5 2

第一次升序排序后,序列为[3,4,5,1,2];

第二次升序排序后,序列为[3,4,1,5,2];

第三次升序排序后,序列为[1,3,4,5,2];

对于全部数据,保证有1≤n≤100,1≤ai≤100,1≤q≤100,1≤li≤ri≤n。

公众号
客服 反馈
顶部