内容正文:
国时算机餐
GESP
CCF编程能力等级认证
CCE
Grade Examination of Software Programming
Python三级
2025年09月
1单选题(每题2分,共30分)
题号123456789101112131415
答案D CDAADC DB C BB A D C
第1题人工智能现在非常火,小杨就想多了解一下,其中就经常听人提到大模型”。那么请问这里说的“大模型最
贴切是指()。
☐A.大电脑模型
□B.大规模智能
☐C.智能的单位
口D.大语言模型
第2题在TCP协议中,完成连接建立需要通过()握手。
☐A一次
口B.二次
☐C.三次
☐D.四次
第3题二进制数11010111转换为十六进制是?()
☐A.7c
☐B.c7
☐C.7D
☐D.D7
第4题将十进制2025转化成二进制,可以使用下列哪个表达式?()
☐A.bin(2025)
☐B.oct(2025)
☐C.hex(2o25)
☐D.int(2025,2)
第5题若a=4,b=5,则(aIb)&3的值为?()
☐A.1
□B.5
☐c.0
□D.3
第6题执行下面Python代码后,输出的结果是?()
11st=[1,2,3,4]
2 print(lst.pop(-2))
☐A.None
☐B.1
☐c.2
□D.3
第7题已知列表1st=1ist(range(1,10,2),下列语句输出结果为False的是?()
OA.print(st[2]=1st[-3])
O B.print(Lst[:2]=Lst[:-3])
C.print(lst[:1]==lst[0])
D.print(lst[3]==1st[-2])
第8题字典是键值对的容器,下列有关字典描述正确的是?()
☐A字典一旦创建不可以被修改。
口B.可以通过字典的键找到对应的值,也可以通过值来找到对应的键。
☐C.字典里面的键可以包含列表、字符串等数据类型。
口D.字典里面的键可以是uple(元组)类型。
第9题关于字典的.setdefault()方法,以下说法正确的是?()
□A.如果键不存在,setdefault()方法会返回None并且不会修改原字典。
口B.如果键不存在,setdefault()方法会将键和默认值添加到字典中,并返回默认值。
☐C.如果键存在,setdefault()方法会更新该键的值为指定的默认值。
☐D.如果键存在,setdefault()方法会返回默认值而不是键原有的值。
第10题执行下面Python代码后,输出的结果是?()
1t=(a',b,'c,'a')
2 print(t.index('a',1))
☐A.0
☐B.1
☐C.3
☐D.ValueError
第11题已知元组t=(1,2,3,4,5),下列哪个语句能够得到一个包含t中偶数的元组?()
A.result [x for x in t if x 2 ==0]
☐B.result=tuple(xfor×in t if x%2=o)
C.result (x for x in t if x 2 ==0)
D.result {x for x in t if x 2 ==0}
第12题关于集合中的remove()和discard()方法的区别,以下说法正确的是?
☐A.在移除的元素不存在时都会抛出KeyError。
☐B.在移除的元素不存在时remove()会抛出KeyError,而discard()不会。
☐C.discard()会随机删除一个元素,remove()删除指定元素。
☐D.两者都只能通过索引删除元素。
第13题如何判断集合s1是否是s2的真子集?()
☐A.s1<s2
☐B.s1<=s2
☐C.s1.issubset(s2)
☐D.s1ins2
第14题在处理用户输入的标签字符串时,需要移除每个标签两端的空格并将所有标签转换为小写。已知输入为“
Python,DATA Science,AI",以下哪个代码能正确输出列表['python','data science','ai']?()
☐A.
1
tags =Python,DATA Science,AI
2
result tags.split(',').Lower().strip()
□B.
1
tags =Python,DATA Science,AI
2
result tags.strip().Lower().split(',')
▣c.
1
tags ="Python,DATA Science,AI
result tags.replace(',').Lower().split(',')
D.
1
tags ="Python,DATA Science,AI
2
result [tag.strip().Lower()for tag in tags.split(',')]
第15题下面程序是用枚举法查找最大值的索引,横线处应该填写的是?()
1
arr=3,7,2,9,5
2
maxIndex 0
for i in range(1,Len(arr)):
if
maxIndex i
6 print(maxIndex)
A.arr[maxIndex]arr[i]
OB.arr[i-1]>arr[maxIndex]
C.arr[i]arr[maxIndex]
D.arr[i+1]arr[maxIndex]
2判断题(每题2分,共20分)
题号12345678910
答案×√√√×√×××√
第1题在集成开发环境里调试程序时,要注意不能修改源程序,因为如果修改,就要终止调试、关闭该文件并重新
打开,才能再次开始调试。()
第2题在Python语言中,表达式0xFE=254的值为TrUe。
第3题执行下面Python代码后,输出两个TrUe。
1
t1=〔1,2,3)
2
t2=t1
3
print(t1==t2,t1 is t2)
第4题执行下列两段Python代码,输出的结果相同。
1a,b=10,20
2
a,b=b,a
3
print(a,b)
1a,b=10,20
2
aA=b
3
b A=a
4
a ^=b
5
print(a,b)
第5题下列程序用于输出1至20中,2和3的共同倍数。
1
a [i+1 for i in range(20)]
2
for i in range(20):
if a[i]2 and a[i]3:
4
a[i]=0
for i in range(20):
6
if a[i]:
>
print(a[i],end="")
第6题执行下列Python代码,输出的结果是12。
1 1st [i +1 for i in range(20)]
2
cnt =0
3
for i in range(20,1,-1):
if(1st[i-1]+1st[i-2])%3:
cnt +=1
6
print(cnt)
第7题在对用户输入的标签进行次数统计时,可以使用如下的方法,把标签字符串
"py thon,java,python,c++,java"转换成为字典{'python':2,'java':2,'c+':1}。
tags "python,java,python,c++,java"
2
result {
3
for tag in tags:
result[tag]result.get(tag,0)1
5
print(result)
第8题在分析两个商品的购买用户群体时,可以使用如下方法,找出同时购买商品A和商品B的用户。
1 buyers_a={"User1","User2","User3"}#购买商品A的用户
2
buyers._b={"User2","User3","User4"}#购买商品B的用户
3
print(buyers_a buyers_b)
第9题可以使用如下方法检查输入的网址(如:https://ges迎.ccf.org,cm)是否使用了安全的HTTPS协议,不会产生误
判。
1
urL=input("请输入一个网址")
2
if 'https'in url:
print("使用了HTTP协议")
第10题可以使用枚举算法来找出小于100的所有质数。
3编程题(每题25分,共50分)
3.1编程题1
·试题名称:数组清零
。时间限制:1.0s
·内存限制:512.0MB
3.1.1题目描述
小A有一个由n个非负整数构成的数组a=[a1,a2,,an。他会对数组a重复进行以下操作,直到数组a只包含0
。在一次操作中,小A会依次完成以下三个步骤:
1.在数组a中找到最大的整数,记其下标为k。如果有多个最大值,那么选择其中下标最大的。
2.从数组a所有不为零的整数中找到最小的整数aj。
3.将第一步找出的ak减去aj。
例如,数组a=[2,3,4需要7次操作变成[0,0,0:
[2,3,4→[2,3,2→[2,1,2]→[2,1,1]→[1,1,1]→[1,1,0]→[1,0,01→[0,0,0]
小A想知道,对于给定的数组a,需要多少次操作才能使得a中的整数全部变成0。可以证明,a中整数必然可以在
有限次操作后全部变成0。你能帮他计算出答案吗?
3.1.2输入格式
第一行,一个正整数n,表示数组a的长度。
第二行,n个非负整数a1,a2,,an,表示数组a中的整数。
3.1.3输出格式
一行,一个正整数,表示a中整数全部变成0所需要的操作次数。
3.1.4样例
3.1.4.1输入样例1
13
2234
3.1.4.2
输出样例1
17
3.1.4.3输入样例2
15
213225
3.1.4.4输出样例2
113
3.1.5数据范围
对于所有测试点,保证1≤n≤100,0≤a:≤100。
3.1.6
参考程序
1
#数组清零次数
2
n int(input())
3
num_list=List(map(int,input().split()#输入数据
4
cnt=0#清零次数
5
#如果num_11st中最大数大于0,则循环,一直到所有数为0
6
while max(num_list)>0:
cnt+=1#如果有最大数大于0,则清零次数增加1次
#找最大数所在的最大编号
9
max_num=max(num_list)#得到最大数
10
#这里是找最大的数的下标,将其减去最小的数。需要注意的是即便题目要求存在多个数相等且最大的时候,先处理下
标较大的,但是即便不这么做也不会影响最终结果
11
max_idx num_list.index(max_num)
12
#利用循环寻找不为0的最小的数
13
min_num=min(num for num in num_.list if num>o)#大于o的最小数
14
num_list[max_idx]-=min_num
15
print(cnt)
3.2
编程题2
。试题名称:日历制作
。时间限制:1.0s
·内存限制:512.0MB
32.1题目描述
小A想制作2025年每个月的日历。他希望你能编写一个程序,按照格式输出给定月份的日历。
具体来说,第一行需要输出MON TUE WED THU FRI SAT SUN,分别表示星期一到星期日。接下来若干行中依次输
出这个月所包含的日期,日期的个位需要和对应星期几的缩写最后一个字母对齐。例如,2025年9月1日是星期
一,在输出九月的日历时,1号的个位1就需要与星期一M0N的最后一个字母N对齐。九月的日历输出效果如
下:
1
MON TUE WED THU FRI SAT SUN
1
234567
3
8
91011121314
15
16
1718192021
5
22
23
2425262728
6
29
30
你能帮助小A完成日历的制作吗?
3.2.2输入格式
一行,一个正整数m,表示需要按照格式输出2025年m月的日历。
3.2.3输出格式
输出包含若干行,表示2025年m月的日历。
3.2.4样例
3.2.4.1
输入样例1
19
3.2.4.2
输出样例1
1
MON TUE WED THU FRI SAT SUN
234
5
67
3
91011
12
1314
15
16
17
18
19
20
21
5
22
23
2425
2627
28
6
29
30
3.2.4.3
输入样例2
16
3.2.4.4
输出样例2
1
MON TUE WED THU FRI SAT SUN
2
1
3
2
3
4
5
6
7
8
9101112
13
14
16
17
18
1920
21
22
23
24
25
26
27
28
29
7
30
3.2.5
数据范围
对于所有测试点,保证1≤m≤12。
3.2.6
参考程序
1
#输出日历
2
#根据题目,9月1日星期一,到1月1日总计243天,除以7余数是5,即相当于
3
#多个7天周期后,余数是5天,相当于星期3。
4
m int(input())
6
#每一个月的天数,编号为不用,与月份数保特一致,1月是d编号为1的天数
d=[0,31,28,31,30,31,30,31,31,30,31,30,31]
8 print("MON TUE WED THU FRI SAT SUN")
9
W=3#根据前面的计算,2025年1月1日星期三
10
for i in range(1,m):
11
w +d[i]
12
w=w%7#计算出当月星期一是星期几
13
week=[]#保存即将输出的日历字符串
14
#输出星期一之前的空白
15
week-[""]*(w-1)
16
#根据月份,取得月份所在天数
17
for i in range(1,d[m]1):
18
#week中已有7个成员,则输出
10
£1nn1-7
20
print("".join(week))
122
week=[f"{i:3d}"]#保存当前日期
else:
3
week.append(f"{i:3d}")#将当前日期存入week
#如果week还有成员,则输出
25
if len(week)!=0:
26
print("".join(week))