CCF GESP2026.3-python编程四级
|
9页
|
315人阅读
|
4人下载
内容正文:
时真机架
GESP
CCF编程能力等级认证
Grade Examination of Software Programming
Python
四级
2026年03月
1单选题(每题2分,共30分)
题号123456789101112131415
答案B D CC B C B D C B C B A B D
第1题2026年春节联欢晚会上一个武术表演节目《武B0T》。节目中多个人形机器人会表演空翻,它们落地可能会
有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作
一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备()。
☐A.用于检测重心的重力传感器
☐B.预装的AI算法程序
☐C.接收动作指令的遥控器
口D.拍摄其他机器人的摄像头
第2题下面代码用来找出输入的N个正整数中最大的一个。如果将代码段用流程图来表示,则L1标记的代码行
应该使用的图形是()。
1 Max 0
N int(input())
3
4
while(N)
5
val int(input())
6
if val Max:#L1
7
Max val
N-=1
9
10
print(Max)
☐A.圆形框
☐B.椭圆形框
口C.平行四边形框
☐D.菱形框
第3题执行以下Python代码后,输出的结果是?()
1
matrix=[1,2,3],[4,5,6],[7,8,9]
2
total 0
for row in matrix:
4
for element in row:
5
if element 2 ==0:
6
total +element
>
print(total)
第1页/共9页
☐A.4
☐B.10
☐C.20
☐D.25
第4题执行以下Python代码,说法正确的是?()
1tUp=(1,[2,3],4)
2tup[1]=[5,6]
口A.元组被成功修改为(1,[5,6],4)
☐B.代码可以执行,但元组内容未改变
□C.拋出TypeError异常
☐D.元组被修改为(1,2,3,4,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))
☐A3
☐B.4
☐c.5
□D.6
第6题函数定义def func(*args):pass中的*args会将传入的参数打包成什么类型:
☐A.列表
☐B.字典
口C.元组
□D.集合
第7题在嵌套函数中,需要修改外层函数(非全局作用域)的变量,应使用哪个关键字?()
▣A.global
☐B.nonlocal
☐C.local
☐D.outer
第8题执行以下Python代码后,输出的结果是?()
第2页/共9页
1
def process_data(data):
result [
for item in data:
4
if item 0:
5
result.append(item 2)
6
elif item 0:
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))
☐A.12
☐B.6
▣c.8
☐D.9
第9题关于lambda匿名函数,以下描述正确的是?()
☐A.lambda匿名函数可以包含多个表达式,用分号分隔
口B.lambda匿名函数必须有参数
☐C.lambda匿名函数可以接受多个参数,但只能有一个表达式
☐D.lambda匿名函数必须有return语句
第10题文件text.txt的内容如下:
1 Python is a programming language.
2 Python is easy to learn.
以下程序统计单词"Python'"在文件中出现的次数。Pythor后面是空格或行尾,且不跟标点。请补全代码。()
1
count =0
2
with open("text.txt","r")as f:
3
content=f.-----#补全代码
words content.split()
for word in words:
6
if word =="Python":
7
count +1
8
print("Python出现次数:",count)
☐A.readlines()
☐B.read)
☐c.readline()
☐D.readlines
第11题以下代码的时间复杂度是?()
1 def func(n):
2
SUm =0
3
for i in range(n):
for j in range(i):
sum +=j
第3页/共9页
☐A.0(1)
☐B.O(n)
☐c.0(n2)
☐D.O(log n)
第12题执行以下ytho代码后,输出的结果是?()
1 try:
2
print(1,end="")
3
raise ValueError("x")
except ValueError as e:
print(2,end="")
6
else:
7
print(3,end="")
8
finally:
print(4,end="")
☐A.14
☐B.124
☐C.1234
☐D.程序报错
第13题以下代码使用插入排序对列表进行升序排序。空白处应填入?()
1 def insertion_sort_optimized(arr):
2
n len(arr)
for i in range(1,n):
key=arr[i]#当前待插入元素
5
j=i-1
6
whilej>=0 and arr[j]key:
7
arr[j+1]=arr[j]#元素后移
8
j-=1
#插入元素到正确位置
☐A.arr[j+1]=key
☐B.arr[j-1]=key
☐C.key=arr[j]
☐D.arr[i]=key
第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):
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)
口A.找出所有n位数
第4页/共9页
☐B.找出由两个n位数相乘得到的最大回文数
口C.找出所有回文数
□D.计算两个n位数乘积的最大值
第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:
return"无效分数"
6
for key in sorted(grade_map.keys(),reverse=True):
7
if score >key:
return__--_@-----
9
10
score int(input())
11
grade get_grade(score)
12
print(f"分数{score}的等级是{_--②--}")
☐A.①grade_.map[score]②grade
☐B.①key②get_grade(score)
☐C.①grade_.-map[key]②score
☐D.①grade_map[key]②grade
2判断题(每题2分,共20分)
题号12345678910
答案√××√√×××√×
第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代码后,输出的结果是2010。
1
def func(a,b):
2
a a b
3
b a b
4
aa b
return a,b
6
7
8a,b=func(10,20)
9 print(a,b)
第5题执行以下Python代码后,输出的结果是[6,7]。
1 print(list(filter(lambda x:x 5,[3,6,7,2])))
第5页/共9页
第6题执行以下Python代码后,输出的结果是789
456'。
1
with open('test.txt','w')as f:
2
f.write('123
456')
3
with open('test.txt','r+')as f:
4
f.seek(0,2)
f.write('789)
6
f.seek(o)
print(repr(f.read()))
第7题下面这段程序的时间复杂度为平方阶O()。
def func(n):
2
for i in range(n):
3
for j in range(n):
1fi%2==0:
break
第8题执行以下Python代码后,会抛出异常ZeroDivisionError。
1
data {'a':1}
2
index int(input())
3
print(data['b']index)
第9题在对列表进行排序时,sorted()函数会返回一个新的排序后的列表,不修改原列表,而sort()方法会直
接修改原列表,返回值为None。
第10题阅读以下递推算法的Pythor代码,执行后的输出结果是13。
1a,b=1,2
2
for i in range(3):
3
a,bb,a b
4
print(b)
3
编程题(每题25分,共50分)
3.1
编程题1
·试题名称:山之谷
。时间限制:1.0s
。内存限制:512.0MB
3.1.1题目描述
现有一片山地,可以视为一个N行M列的网格图,第i行j列的海拔为h
如果一个单元格的海拔不高于其所有相邻单元格(相邻包括上、下、左、右、左上、右上、左下、右下,最多8个
方向)的海拔,则称该单元格为山谷。
请你数一数该片山地中有多少山谷。
第6页/共9页
3.1.2输入格式
第一行包含2个整数N,M,表示山地的大小。
之后N行,每行包含M个整数h,l,h,2,·,h,M,表示海拔。
3.1.3输出格式
输出1行,包含1个整数C,表示山谷的数量。
3.1.4样例
3.1.4.1输入样例
135
2
76679
3
65676
465789
3.1.4.2
输出样例
13
3.1.5样例解释
样例1如图所示,绿色单元格代表山谷:
76
6
79
6
5
6
76
6
5789
3.1.6数据范围
保证1≤N,M≤100,1≤h≤105。
第7页/共9贡
3.1.7参考程序
1#输入行列数
2
n,m map(int,input().split())
3
4
#输入每一行的海拔
5
h=[]
6
for i in range(n):
row list(map(int,input().split()))
h.append(row)
9
10
ans =0
11
#先遍历行
12
for i in range(n):
13
#再遍历列
14
for j in range(m):
15
ok True
16
#遍历周边8个格子
17
for k in range(-1,2):
18
for l in range(-1,2):
19
#边界判定,不能超列表边界
20
if 0 <i+k n and 0 <=j+<m and h[i k][j+]<h[i][]:
21
ok False
if(ok):
23
ans +=1
24
print(ans)
3.2
编程题2
·试题名称:礼盒排序
。时间限制:1.0s
。内存限制:512.0MB
3.2.1题目描述
商店推出了许多礼盒,每个礼盒中包含k件商品,每件商品都有一个价格。
现在需要对这些礼盒进行排序,排序规则如下:
1.先按礼盒总价格从小到大排序;
2.如果总价格相同,按礼盒中最贵商品的价格从小到大排序;
3.如果仍然相同,按礼盒中最便宜商品的价格从小到大排序;
4.如果仍然相同,按礼盒编号从小到大排序。
请输出排序后的礼盒编号。
3.2.2输入格式
第一行包含两个整数和k,分别表示礼盒数量和每个礼盒中商品的数量。
接下来n行,每行包含k个整数,第i行表示第i个礼盒中各商品的价格。
第8页/共9页
3.2.3输出格式
输出一行,包含排序后的礼盒编号(编号从1开始),用空格分隔。
3.2.4样例
3.2.4.1输入样例
143
2352
3415
4224
5343
3.2.4.2
输出样例
13421
3.2.5样例解释
4个礼盒分别为:
编号商品价格总价最大值最小值
352
9
5
2
2
415
10
9
224
P
2
4
343
10
3
排序过程:
1.按总价排序,3号礼盒总价最小;
2.其余总价均为10,再按最大值排序,4号最大值更小;
3.1号和2号最大值相同,再按最小值排序,2号更小。
最终顺序为:3421
3.2.6数据范围
保证1≤n≤103,1≤k≤10,商品价格≤104。
3.2.7参考程序
1
n,k map(int,input().split())
2
3
v=[]
4
5
for i in range(n):
6
nums list(map(int,input().split()))
s sum(nums)
8
mx max(nums)
9
mn min(nums)
10
v.append((s,mx,mn,i+1))
11
12
v.sort()
13
14
for i in range(n):
15
print(v[i][3],end="m if i==n -1 else ""
16
print()
第9页/共9页
资源预览图