内容正文:
题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
答案 C C D D D C A B C D D B D A A
Python 四级
2024 年 03 ⽉
1 单选题(每题 2 分,共 30 分)
第 1 题 ⼩杨的⽗母最近刚刚给他买了⼀块华为⼿表,他说⼿表上跑的是鸿蒙,这个鸿蒙是?( )
A. ⼩程序
B. 计时器
C. 操作系统
D. 神话⼈物
第 2 题 中国计算机学会(CCF)在2024年1⽉27⽇的颁奖典礼上颁布了王选奖,王选先⽣的重⼤贡献是( )。
A. 制造⾃动驾驶汽车
B. 创⽴培训学校
C. 发明汉字激光照排系统
D. 成⽴⽅正公司
第 3 题 下⾯有关Python的说法,正确的是( )。
A. Python是低级程序设计语⾔,适合初学者
B. Python⼀门编译型语⾔
C. 和C/C++、Java⼀样,Python也是静态类型的语⾔
D. Python是脚本型程序设计语⾔
第 4 题 有关Python语句 print(3,2,sep='#') 说法错误的是( )。
A. 3和2称之为位置参数
B. sep称之为命名关键字参数
C. 3和2称之为变参参数
D. sep参数可以放在3和2之前
第 5 题 下⾯Python代码执⾏后,第4⾏输出是( )。
A. [1, 2] [1, 2] [1, 2, 1, 2, 1, 2]
B. [1, 100] [1, 100] [1, 100, 1, 100, 1, 100]
C. [1, 100] [1, 2] [1, 2, 1, 2, 1, 2]
D. [1, 100] [1, 100] [1, 2, 1, 2, 1, 2]
第 6 题 下⾯Python代码最后执⾏后最后⼀⾏输出是( )。
A. [2, 6, 10, 14, 18] [1, 3, 5, 7, 9]
B. [1, 3, 5, 7, 9] [2, 6, 10, 14, 18]
C. [2, 6, 10, 14, 18] [2, 6, 10, 14, 18]
D. [1, 3, 5, 7, 9] [1, 3, 5, 7, 9]
第 7 题 下⾯Python代码执⾏后输出是( )。
A. 3 [1, 2, 3]
B. 3 3
C. [1, 2, 3] [1, 2, 3]
D. [1, 2, 3] 3
第 8 题 下⾯Python代码执⾏后输出是( )。
A. 3, 1
B. (3, 1)
C. 3
D. 报错。因为第2⾏只能返回⼀个值,不可以是两个值
第 9 题 Python代码 print({(i,i ** 2) for i in range(5)}) 执⾏后可能输出是( )。
A. ((0, 0), (1, 1), (2, 4), (3, 9), (4, 16))
B. [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16)]
C. {(2, 4), (4, 16), (0, 0), (1, 1), (3, 9)}
D. {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
第 10 题 下⾯Python代码执⾏,其输出是( )。
A. True True True True
B. True False False True
C. False False False False
D. True True False True
第 11 题 在Python中,对list、tuple或str类型执⾏in运算,其时间复杂度均为( )。
A.
B.
C.
D. ⾮上述备选答案
第 12 题 下列Python代码⽤于寻找1~100之间的因数最多的数及其因数,程序本意是factor变量存储形如{6:[1,2,3,6],8:
[1,2,4,8]}。下⾯有关说法正确的是( )。
A. 程序第5⾏存在语法错误,因为append()的返回值为None
B. 程序第5⾏存在语法错误,当某个数第1次作为factor的key时,其对应的值为append()的返回值即None,当该数
第2次作为factor的key时,factor.get(i,[])返回值为None不再是[],append()不能成其为函数
C. 程序第6⾏存在语法错误,因为max()不能有key参数
D. 程序第6⾏存在语法错误,max()虽然可以有key作为参数,但其中lambda函数存在语法错误
第 13 题 在如下Python代码中,假设变量zen代表很多字符此处仅为⽰例,代码实现按⼩写字母频次升序,如频次相
同则按字符ASCII升序输出,横线处应填⼊是( )。
A. alphaCount[c] += 1
题号 1 2 3 4 5 6 7 8 9 10
答案
B. alphaCount[c.lower()] += 1
C. alphaCount[c.lower] = alphaCount.get(c.lower,0) + 1
D. alphaCount[c.lower()] = alphaCount.get(c.lower(),0) + 1
第 14 题 下⾯Python代码能正确执⾏。在代码被执⾏之前,abc.txt已经存在,其⽂件字节数为100。下⾯有关说法,
正确的是( )。
A. abc.txt的内容将被覆盖,但由于没有写⼊操作,⽂件字节数为0
B. abc.txt的内容不会被覆盖,因为没有执⾏任何⽂件写⼊操作,abc.txt将继续原样存在
C. 原abc.txt的内容将被复制到abc.bak之中,然后覆盖abc.txt,由于没有写⼊操作,因此⽂件字节数为0
D. abc.txt将被删除,因为第⼀⾏代码执⾏后,原⽂件内容将被删除,但由于没有写⼊操作,因此abc.txt将不会存
在
第 15 题 下列Python代码执⾏后,将输出的是( )。
A. 0#2#
B. 0#1#2#
C. 1#2#
D. 0#
2 判断题(每题 2 分,共 20 分)
第 1 题 任何⼀个for循环都可以转化为等价的while循环。( )
第 2 题 ⼩杨今年春节回奶奶家了,奶奶家的数字电视要设置ip地址并接⼊到WIFI盒⼦才能收看节⽬,那这个WIFI盒
⼦具有路由器的功能。( )
第 3 题 ⼩杨在练习Python准备GESP考试的过程中,发现如果执⾏import os,可以通过os.system()启动外部程序,因
此也可以说Python是⼀个⼩型操作系统。( )
第 4 题 在Python中,任何⼀个while循环都可以转化为等价的for循环( )。
第 5 题 在Python中,list类型有sort()函数,但tuple、set和dict则没有sort()函数。( )
第 6 题 当对list和tuple类型执⾏in运算时,其时间复杂度为 O(N) 。( )
第 7 题 在Python中, [i*2 for i in range(10) ]*3 是合法的表达式。( )
第 8 题 在下⾯Python代码中,⽂本⽂件abc.txt共有10⾏,每⾏由1个英⽂半角字母组成。第5⾏代码执⾏后其输出为
10。( )
第 9 题 在Python中,已执⾏ tpl = ([1,2],[3,4],[5,6]) ,如果执⾏ tpl[1] = [99,100] 将报错,⽽执⾏
tpl[1][1] = [99,100] 则不会报错。( )
第 10 题 在Python中,表达式 len(set("China")^set("china")) 的值为2。( )
3 编程题(每题 25 分,共 50 分)
3.1 编程题 1
试题名称:相似字符串
3.1.1 问题描述
对于两个字符串 和 ,如果 可以通过删除⼀个字符,或插⼊⼀个字符,或修改⼀个字符变成 ,那么我们说
和 是相似的。
⽐如 apple 可以通过插⼊⼀个字符变成 applee ,可以通过删除⼀个字符变成 appe ,也可以通过修改⼀个字符
变成 bpple ,因此 apple 和 applee 、 appe 、 bpple 都是相似的。但 applee 并不能通过任意⼀个操作变成
bpple ,因此它们并不相似。
特别地,完全相同的两个字符串也是相似的。
给定 组 ,请你分别判断他们是否相似。
3.1.2 输入描述
第⼀⾏⼀个正整数 。
接下来 ⾏,每⾏两个⽤空格隔开的字符串 和 。
保证 , 的长度不超过 。保证 和 只包含⼩写字母。
3.1.3 输出描述
输出 ⾏,对于每组 ,如果它们相似,则输出 similar ,否则输出 not similar 。
3.1.4 特别提醒
在常规程序中,输⼊、输出时提供提⽰是好习惯。但在本场考试中,由于系统限定,请不要在输⼊、输出中附带任
何提⽰信息。
3.1.5 样例输入 1
3.1.6 样例输出 1
3.1.7 参考程序
5
apple applee
apple appe
apple bpple
applee bpple
apple apple
1
2
3
4
5
6
similar
similar
similar
not similar
similar
1
2
3
4
5
def is_similar(A, B):
m, n = len(A), len(B)
if abs(m - n) > 1:
return False
if m == n:
diff = sum(1 for i in range(m) if A[i] != B[i])
return diff <= 1
else:
shorter = A if m < n else B
longer = B if m < n else A
i, j = 0, 0
diff = 0
while i < len(shorter) and j < len(longer):
if shorter[i] != longer[j]:
diff += 1
if diff > 1:
return False
j += 1
else:
i += 1
j += 1
return True
T = int(input())
for _ in range(T):
A, B = input().split()
if is_similar(A, B):
print("similar")
else:
print("not similar")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
3.2 编程题 2
试题名称:做题
3.2.1 题目描述
⼩杨同学为了提⾼⾃⼰的实⼒制定了做题计划,在第 天时,他必须要完成 道题,否则他就会偷懒。
⼩杨同学现在找到了⼀个题库,⼀共有 套题单,每⼀套题单中有⼀定数量的题⽬。但是他⼗分挑剔,每套题单他
只会使⽤⼀次,每⼀天也只能使⽤⼀套题单⾥的题⽬,之后那套题单就会被弃之不⽤。对于每套题单,他不必完成
题单内所有的题。
那么问题来了,⼩杨同学最多会做题⼏天才偷懒呢?
3.2.2 输入格式
第⼀⾏,1个数为 ,表⽰有多少套题单。
第⼆⾏,n个整数 ,分别表⽰每套题单有多少道题。
3.2.3 输出格式
输出⼀⾏,⼩杨同学偷懒前最多做题天数。
3.2.4 样例1
对于全部数据,保证有 。
3.2.5 参考程序
4
3 1 4 1
1
2
31
n = int(input())
A = list(map(int, input().split()))
A = sorted(A)
day, idx = 1, 0
while idx < n:
if A[idx] >= day:
day += 1
idx += 1
print(day - 1)
1
2
3
4
5
6
7
8
9
10