image

编辑人: 流年絮语

calendar2025-06-15

message8

visits343

2024年3月CCF-GESP编程能力等级认证Python编程四级真题参考答案

一、单选题

1、小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?(   )(2024.3py3级)

A 小程序

B 计时器

C 操作系统

D 神话人物


2、中国计算机学会(CCF)在2024年1月27日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是(   )。(2024py4级)

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 O(N)

B O(N2)

C O(1)

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

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#


二、判断题

16、任何一个for循环都可以转化为等价的while循环。(   )

A 正确

B 错误


17、小杨今年春节回奶奶家了,奶奶家的数字电视要设置ip地址并接入到WIFI盒子才能收看节目,那这个WIFI盒子具有路由器的功能。(   )(python)

A 正确

B 错误


18、小杨在练习Python准备GESP考试的过程中,发现如果执行import os,可以通过os.system()启动外部程序,因此也可以说Python是一个小型操作系统。(   )

A 正确

B 错误


19、在Python中,任何一个while循环都可以转化为等价的for循环(   )。

A 正确

B 错误


20、在Python中,list类型有sort()函数,但tuple、set和dict则没有sort()函数。(   )

A 正确

B 错误


21、当对list和tuple类型执行in运算时,其时间复杂度为 O(N) 。(   )

A 正确

B 错误


22、在Python中, [i*2 for i in range(10) ]*3 是合法的表达式。(   )

A 正确

B 错误


23、在下面Python代码中,文本文件abc.txt共有10行,每行由1个英文半角字母组成。第5行代码执行后其输出为10。(   )

A 正确

B 错误


24、在Python中,已执行 tpl = ([1,2],[3,4],[5,6]) ,如果执行 tpl[1] = [99,100] 将报错,而执行tpl[1][1] = [99,100] 则不会报错。(   )

A 正确

B 错误


25、在Python中,表达式 len(set("China")^set("china")) 的值为2。

A 正确

B 错误


三、实操题

26、相似字符串

问题描述

对于两个字符串A和B,如果A可以通过删除一个字符,或插入一个字符,或修改一个字符变成B,那么我们说A和B是相似的。

比如 apple 可以通过插入一个字符变成 applee ,可以通过删除一个字符变成 appe ,也可以通过修改一个字符变成 bpple ,因此 apple 和 applee 、 appe 、 bpple 都是相似的。但 applee 并不能通过任意一个操作变成bpple ,因此它们并不相似。

特别地,完全相同的两个字符串也是相似的。

给定T组A,B,请你分别判断他们是否相似。

输入描述

第一行一个正整数T。

接下来T行,每行两个用空格隔开的字符串A和B。

保证T≤100,A,B的长度不超过50。保证A和B只包含小写字母。

输出描述

输出T行,对于每组A,B,如果它们相似,则输出 similar ,否则输出 not similar 。

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。(python)


样例输入 1

5
apple applee
apple appe
apple bpple
applee bpple
apple apple

样例输出 1

similar
similar
similar
not similar
similar

参考答案:```pythonT = int(input())for _ in range(T):A, B = input().split()if len(A) == len(B):if sorted(A) == sorted(B):print("similar")else:print("not similar")else:if abs(len(A) - len(B)) > 1:print("not similar")else:dp = [[0] * (len(B) + 1) for _ in range(len(A) + 1)]for i in range(len(A) + 1):for j in range(len(B) + 1):if i == 0:dp[i][j] = jelif j == 0:dp[i][j] = ielif A[i - 1] == B[j - 1]:dp[i][j] = dp[i - 1][j - 1]else:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1if dp[len(A)][len(B)] == 0:print("similar")else:print("not similar")```


27、做题

题目描述

小杨同学为了提高自己的实力制定了做题计划,在第k天时,他必须要完成k道题,否则他就会偷懒。

小杨同学现在找到了一个题库,一共有n套题单,每一套题单中有一定数量的题目。但是他十分挑剔,每套题单他只会使用一次,每一天也只能使用一套题单里的题目,之后那套题单就会被弃之不用。对于每套题单,他不必完成题单内所有的题。

那么问题来了,小杨同学最多会做题几天才偷懒呢?

输入格式

第一行,1个数为n,表示有多少套题单。

第二行,n个整数a1,a2,...,an,分别表示每套题单有多少道题。

输出格式

输出一行,小杨同学偷懒前最多做题天数。


样例输入

4
3 1 4 1

样例输出

3

对于全部数据,保证有1≤n≤106,1≤ai≤109

(python)

参考答案:这道题是一个动态规划问题,可以使用动态规划算法来解决。首先,我们需要定义一个数组dp,其中dp[i]表示小杨同学在前i套题单中最多可以做的天数。我们可以从第一套题单开始,依次考虑每套题单。对于每套题单,我们有两种选择:1. 使用这套题单,那么在前i-1套题单中,小杨同学最多可以做的天数为dp[i-1]。由于小杨同学必须要完成i道题,因此我们需要找到一种方法,使得在前i-1套题单中,小杨同学最多可以做的天数加上这套题单中的题目数量大于等于i。即,我们需要找到一个j,使得dp[j] + a[i] >= i,其中a[i]表示第i套题单中的题目数量。2. 不使用这套题单,那么在前i套题单中,小杨同学最多可以做的天数就是dp[i-1]。因此,我们可以得到状态转移方程:dp[i] = max(dp[j] + 1),其中j的取值范围是0到i-1,且满足dp[j] + a[i] >= i。最后,我们遍历所有的题单,找到最大的dp值,即为小杨同学最多可以做的天数。


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2024年3月CCF-GESP编程能力等级认证Python编程四级真题参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share