2024年06月CCF-GESP编程能力等级认证Python编程五级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。

一、单选题(每题 2 分,共 30 分)

第 1 题

在Python中,print((c for c in “GESP”))的输出是( )。
A. (‘G’, ‘E’, ‘S’, ‘P’)
B. [‘G’, ‘E’, ‘S’, ‘P’]
C. {‘G’, ‘E’, ‘S’, ‘P’}
D. 以上选项均不正确

答案:D

第 2 题

下面有关快速排序的说法,错误的是( )。
A. 快速排序算法通常采用递归实现。
B. 快速排序算法是一种稳定排序算法。
C. 如果被排序数组或者list已排序或逆序,其时间复杂度是 O ( N 2 ) O(N^2) O(N2)
D. 快速排序是一种原地(in-place)排序算法。

答案:B

第 3 题

内排序有不同的类别,从排序算法的实现思路上考虑,下面哪种排序算法和插入排序是同一类?( )
A. 希尔排序
B. 快速排序
C. 堆排序
D. 冒泡排序

答案:A

第 4 题

下面Python代码用于求斐波那契数列,该数列第1、2项为1,以后各项均是前两项之和。函数Fibo()属于()。

def Fibo(N):if N == 1 or N == 2:return 1fiboList = [1, 1]for i in range(2, N):fiboList.append(fiboList[i - 1] + fiboList[i - 2])return fiboList[N-1]

A. 枚举算法
B. 贪心算法
C. 迭代算法
D. 递归算法

答案:C

第 5 题

下面Python代码用于将输入金额换成最少币种组合方案,其实现算法是( )。

def findCoins(coins, Money):coins_used = []for coin in coins:while Money >= coin:coins_used.append(coin)Money -= coinreturn coins_usedcoins = [100, 50, 20, 10, 5, 2, 1] #货币种类,单位相同
M = int(input()) #输入换算的金额
coins_needed = find_coins(coins, M)result = [(c,coins_needed.count(c)) for c in coins]
result = [x for x in result if x[1] > 0]

A. 枚举算法
B. 贪心算法
C. 迭代算法
D. 递归算法

答案:B

第 6 题

有关下面Python的代码,错误的是( )。

def count_if(iterData,*,key=None):if key == None:return len(iterData)Count = 0for i in iterData:Count += bool(key(i))return Count

A. 执行 print(count_if(range(100))) 将输出 100
B. 执行 print(count_if(range(-10,10), key = abs)) 将输出 19
C. 执行 print(count_if(range(-100,10),key = lambda x:x > 5)) 将输出 4
D. 代码 Count += bool(key(i)) 存在错误

答案:D

第 7 题

在下面的Python代码中,最后一行用于输出小于0的list,横线处不能填入的代码是( )。

def LT(a, b):return a < blstData = list(range(-100,100))
print(___________________________)

A. [x for x in lstData if x < 0 ]
B. list(filter(lambda x: x < 0, lstData))
C. list(filter(LT(x,0), lstData))
D. [x for x in lstData if LT(x, 0)]

答案:C

第 8 题

汉字的unicode编码界于0x4E00和0x9FA5之间。下面Python的代码用于读取红楼们和水浒传文本。如果要能完整阅读这两本小说,求出需要认识的汉字集合,横线处应填入代码是( )。

shzFile = open("水浒传.txt", "r", encoding = "utf-8")
hlmFile = open("红楼梦.txt", "r", encoding = "utf-8")
sSet = set(shzFile.read())
hSet = set(hlmFile.read())
shzFile.close()
hlmFile.close()print(________________________________)

A. {x for x in (sSet + hSet) if 0x4E00 <= ord(x) <= 0x9FA5 }
B. {x for x in (sSet | hSet) if 0x4E00 <= x <= 0x9FA5 }
C. {x for x in (sSet + hSet) if 0x4E00 <= x <= 0x9FA5 }
D. {x for x in (sSet | hSet) if 0x4E00 <= ord(x) <= 0x9FA5 }

答案:D

第 9 题

求回文子字符串,如:在ABCDDCBAXz中,DD、CDDC、BCDDCB、ABCDDCBA均为回文子字符串。下面Python代码是其实现,横线处应填入的代码是( )。

srcStr = input()symList = [] #保存回文子字符串
for i in range(len(srcStr)):for j in range(i + 2, len(srcStr) + 1):subStr = ___________if subStr == _____________:symList.append(subStr)for i in sorted(symList, key = lambda x: len(x)):print(i)

A. srcStr[i:j] , subStr[::-1]
B. srcStr[i:j] , subStr[j:i:-1]
C. srcStr[i+2:j] , subStr[j-1:i:-1]
D. srcStr[i:j+2] , subStr[j-1:i-1:-1]

答案:A

第 10 题

上面代码的时间复杂度是( )。
A. O ( l o g N ) O(logN) O(logN)
B. O ( N l o g N ) O(NlogN) O(NlogN)
C. O ( N ) O(N) O(N)
D. O ( N 2 ) O(N^2) O(N2)

答案:A

第 11 题

有关下面Python代码的说法,错误的是( )。

def Sort(lst):for i in range(1, len(lst)):key = lst[i]j = i - 1while j >= 0 and key < lst[j]:lst[j + 1] = lst[j]j -= 1lst[j + 1] = key
lst = [4,5,13,2,7,10,1,3,8,11,6,9,12]
lst = Sort(lst)
print("sorted list:", lst)

A. 该段代码是插入排序算法的实现
B. 如果lst完全有序,则时间复杂度为
C. 如果lst完全逆序,则时间复杂度为
D. 由于Sort()函数没有返回值,没有最终达到排序效果

答案:D

第 12 题

下面Python函数nGram()用于逐一从字符串中截取n个字符,如:nGram(“ABCDEF”,2)将逐一截取为AB、BC、CD、DE、EF,如:nGram(“ABCDEF”,3)将逐一截取为ABC、BCD、CDE、DEF,并统计每种截取的数量,横线处应填入代码是( )。

def nGram(S,n):Result = {}#保存截取字符串及其数量for i in range(________________):nChar = ________________Result[nChar] = Result.get(nChar,0) + 1return Result

A. len(S)-n , S[i:n]
B. len(S)-n+1 , S[i:i+n]
C. len(S) , S[i:i+n]
D. len(S)-n , S[i:i+n]

答案:B

第 13 题

上题代码的时间复杂度是( )。
A. O ( l o g N ) O(logN) O(logN)
B. O ( N l o g N ) O(NlogN) O(NlogN)
C. O ( N ) O(N) O(N)
D. O ( N 2 ) O(N^2) O(N2)

答案:C

第 14 题

下面是埃氏素数筛的Python实现,横线上应填入的代码是( )。

def listPrime(N):primeList = list(range(N+1))primeList[0] = primeList[1] = Falsefor i in range(2,int(N ** 0.5) + 1):if primeList[i] != False:for j in range(_____________):primeList[j] = Falsereturn [x for x in primeList if x != False]

A. i + i, N + 1, 2
B. i * i, N + 1, i
C. i * i, N, i * i
D. i, N + 1, i

答案:B

第 15 题

上题代码的时间复杂度是( )。
A. O ( N 2 ) O(N^2) O(N2)
B. O ( N l o g N ) O(NlogN) O(NlogN)
C. O ( N l o g l o g N ) O(NloglogN) O(NloglogN)
D. O ( N ) O(N) O(N)

答案:C

二、判断题(每题 2 分,共 20 分)

第 16 题

在程序设计中,i * i的效率通常比i ** 2 更高。( )

答案:正确

第 17 题

求解指定正整数范围内所有质数,采用线性筛算法比埃氏筛效率更高。( )

答案:正确

第 18 题

Python没有指针语法,不能实现C++中涉及指针的算法。( )

答案:错误

第 19 题

如果将双向链表的最后一个元素指向第一个元素,则构成环状链表。( )

答案:正确

第 20 题

链表不能采用快速排序或堆排序,但可以采用插入排序。( )

答案:正确

第 21 题

在Python中,set或dict因为存储时即自动排序,因此可以用二分法查找,时间复杂度为 O ( l o g N ) O(logN) O(logN)。( )

答案:错误

第 22 题

如果自定义class已经定义了 __lt__() 魔术方法,则包含该类实例的数据结构,则将自动支持内置函数sorted()。( )

答案:正确

第 23 题

归并排序和快速排序都采用递归实现,也都是不稳定排序。( )

答案:错误

第 24 题

下面的Python代码能实现十进制正整数N转换为2、8、10、16,可适用于16进制以内进制。其中n和ds分别表示将转换的数以及目标进制。( )

n,ds = map(int,input().split())
rst = "" #保存转换结果digDict = {i:c for i,c in enumerate("0123456789ABCDEF")}
while n != 0:rst = digDict[n % ds] + rstn //= ds
print(rst)

答案:正确

第 25 题

Python代码 print(sorted(range(10),key=lambda x:x%5)) 执行时将报错。( )

答案:错误

三、编程题(每题 25 分,共 50 分)

第 26 题

试题名称:黑白格
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨有一个 n n n m m m 列的网格图,其中每个格子要么是白色,要么是黑色。
小杨想知道至少包含 k k k 个黑色格子的最小子矩形包含了多少个格子。
输入格式
第一行包含三个正整数 n , m , k n,m,k n,m,k,含义如题面所示。
之后 n n n 行,每行一个长度为 m m m 01 01 01 串,代表网格图第 i i i 行格子的颜色,如果为 0 0 0,则对应格子为白色,否则为黑色。
输出格式
输出一个整数,代表至少包含 k k k 个黑色格子的最小子矩形包含格子的数量,如果不存在则输出 0 0 0
样例1

4 5 5
00000
01111
00011
00011
6

样例解释
对于样例1,假设 ( i , j i,j i,j) 代表第 i i i 行第 j j j 列,至少包含 5 5 5 个黑色格子的最小子矩形的四个顶点为 (2,4),(2,5),(4,4),(4,5),共包含 6 6 6 个格子。
数据范围
在这里插入图片描述

对于全部数据,保证有 1 ≤ n , m ≤ 100 , 1 ≤ k ≤ n × m 1 ≤ n,m ≤ 100,1 ≤ k ≤ n × m 1n,m100,1kn×m
参考程序

N = 110
w = [[0] * N for _ in range(N)]
sum_w = [[0] * N for _ in range(N)]def main():n, m, k = map(int, input().split())for i in range(1, n+1):s = input()for j in range(1, m+1):w[i][j] = int(s[j-1])sum_w[i][j] = sum_w[i][j-1] + w[i][j]ans = 0for i in range(1, m+1):for j in range(i, m+1):num = []now = 0for l in range(1, n+1):tmp = sum_w[l][j] - sum_w[l][i-1]now += tmpnum.append(now)if now >= k:if ans == 0:ans = (j-i+1) * lelse:ans = min(ans, (j-i+1) * l)L, R = 1, lwhile L < R:mid = (L + R + 1) // 2if now - num[mid-1] >= k:L = midelse:R = mid - 1if now - num[L-1] >= k:if ans == 0:ans = (j-i+1) * (l-L)else:ans = min(ans, (j-i+1) * (l-L))print(ans)if __name__ == "__main__":main()

第 27 题

试题名称:小杨的幸运数字
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨认为他的幸运数字应该恰好有两种不同的质因子,例如, 12 = 2 × 2 × 3 12=2×2×3 12=2×2×3 的质因子有 2 , 3 2,3 2,3,恰好为两种不同的质因子,因此 12 12 12是幸运数字,而 30 = 2 × 3 × 5 30=2×3×5 30=2×3×5 的质因子有 2 , 3 , 5 2,3,5 2,3,5,不符合要求,不为幸运数字。
小杨现在有 n n n 个正整数,他想知道每个正整数是否是他的幸运数字。
输入格式
第一行包含一个正整数 n n n,代表正整数个数。
之后 n n n 行,每行一个正整数。
输出格式
输出 n n n 行,对于每个正整数,如果是幸运数字,输出 1 1 1,否则输出 0 0 0
样例1

3
7
12
30
0
1
0

样例解释
7 7 7的质因子有 7 7 7,只有一种。
12 12 12的质因子有 2 , 3 2,3 2,3 ,恰好有两种。 ,
30 30 30的质因子有 2 , 3 , 5 2,3,5 2,3,5,有三种。 , ,
数据范围
在这里插入图片描述

对于全部数据,保证有 1 ≤ n ≤ 1 0 4 1≤n≤10^4 1n104,每个正整数 a i a_i ai 满足 2 ≤ a i ≤ 1 0 6 2≤a_i≤10^6 2ai106

参考程序

N = 10**5 + 10
a = [0] * Ndef calc(x):i = 2mp = {}while i * i <= x:if x % i == 0:mp[i]=1while x % i == 0:x //= ii += 1if x != 1:mp[x]=1return int(len(mp.items()))def main():n = int(input())for i in range(1, n + 1):a[i] = int(input())x = calc(a[i])if x == 2:print("1")else:print("0")if __name__ == "__main__":
main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MiniGPT-Med 通用医学视觉大模型:生成医学报告 + 视觉问答 + 医学疾病识别

MiniGPT-Med 通用医学视觉大模型&#xff1a;生成医学报告 视觉问答 医学疾病识别 提出背景解法拆解 论文&#xff1a;https://arxiv.org/pdf/2407.04106 代码&#xff1a;https://github.com/Vision-CAIR/MiniGPT-Med 提出背景 近年来&#xff0c;人工智能&#xff08;AI…

如何让自动化测试框架更自动化?

一、引言 ​对于大厂的同学来说&#xff0c;接口自动化是个老生常谈的话题了&#xff0c;毕竟每年的MTSC大会议题都已经能佐证了&#xff0c;不是大数据测试&#xff0c;就是AI测试等等&#xff08;越来越高大上了&#xff09;。不可否认这些专项的方向是质量智能化发展的方向&…

刷题(day02)

1、leetcode136.删除链表的结点 给定单向链表的头指针和一个要删除的节点的值&#xff0c;定义一个函数删除该节点。 返回删除后的链表的头节点。 示例 1: 输入: head [4,5,1,9], val 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点&#xff0c;那么在调用了你的函数…

设计模式探索:适配器模式

1. 适配器模式介绍 1.1 适配器模式介绍 适配器模式&#xff08;adapter pattern&#xff09;的原始定义是&#xff1a;将一个类的接口转换为客户期望的另一个接口&#xff0c;适配器可以让不兼容的两个类一起协同工作。 适配器模式的主要作用是把原本不兼容的接口&#xff0c…

c++初阶学习----入门(上)

大家好啊。最近学习了一点关于c的知识。这不就迫不及待的来与大家分享了嘛。但我这也是现学现卖所以咧。有很多遗落甚至不对的地方希望大家可以在评论区里面指出来。这样也可以增加大家对知识的巩固。 c语言与c的联系 不知道大家看到c会不会不由自主的联想到C语言啊。毕竟都是…

手机自带录屏在哪?6个软件教你快速进行手机录屏

手机自带录屏在哪&#xff1f;6个软件教你快速进行手机录屏 手机自带的录屏功能可以让你轻松录制屏幕上的内容&#xff0c;记录游戏过程、制作教程或捕捉其他重要时刻。不同品牌的手机可能在不同位置提供录屏功能。以下是一些常见的手机品牌及其录屏功能位置&#xff0c;以及一…

运动爱好者的新选择:哈氪聆光气传导耳机,轻巧又安全

平时不管是漫步街头、骑行穿梭&#xff0c;还是乘坐公共交通时&#xff0c;我总是喜欢佩戴耳机&#xff0c;借此隔绝外部的喧嚣&#xff0c;享受音乐的乐趣。在户外使用耳机&#xff0c;我更倾向于选择气传导耳机&#xff0c;它们更符合我的需求&#xff0c;因为这种耳机能让我…

SECS/GEM快速完成半导体设备通讯

金南瓜帮助国内大量从事半导体前道设备开发研制、生产的设备厂商&#xff0c;通过快速提供稳定可靠的SECS/GEM、GEM300产品&#xff0c;为客户在激光退火、湿法设备&#xff08;清洗、镀膜等&#xff09;、离子注入、MOCVD、PVD等客户专注于核心工艺提升&#xff0c;提升企业的…

Gen4Gen:多概念个性化图像生成的数据驱动革新

个性化文本到图像生成模型在用户控制生成过程方面取得了重要进展。这些模型能够通过少量训练样本学习并合成包含新颖个性化概念的图像&#xff0c;例如用户的宠物或特定物品。然而&#xff0c;现有技术在处理多概念个性化时存在局限性&#xff0c;尤其是在生成包含多个相似概念…

连接与隔离:Facebook在全球化背景下的影响力

在当今全球化的背景下&#xff0c;Facebook作为全球最大的社交网络平台&#xff0c;不仅连接了世界各地的人们&#xff0c;还在全球社会、经济和文化中发挥着深远的影响。本文将深入探讨Facebook在全球化进程中的作用&#xff0c;以及其对个体和社会之间连接与隔离的双重影响。…

【MATLAB源码-第232期】基于matlab的 (204,188) RS编码解码仿真,采用QPSK调制输出误码率曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 Reed-Solomon码&#xff08;RS码&#xff09;是一类广泛应用于数字通信和存储系统中的纠错码&#xff0c;尤其在光盘、卫星通信和QR码等领域有着重要作用。RS码是一种非二进制的纠删码&#xff0c;由Irving S. Reed和Gustave…

当CNN遇上Mamba,高性能与高效率通通拿下!

传统视觉模型在处理大规模或高分辨率图像时存在一定限制&#xff0c;为解决这个问题&#xff0c;研究者们就最近依旧火热的Mamba&#xff0c;提出了Mamba结合CNN的策略。 这种结合可以让Mamba在处理长序列数据时既能够捕捉到序列中的时间依赖关系&#xff0c;又能够利用CNN的局…

思维+并查集,1670C - Where is the Pizza?

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1670C - Where is the Pizza? 二、解题报告 1、思路分析 考虑两个数组a&#xff0c;b的每个位置只能从a&#xff0c;b中挑一个 不妨记posa[x]为x在a中位置&#xff0c;posb同理 我们假如位置i挑选a[i]&a…

【LLM】三、open-webui+ollama搭建自己的聊天机器人

系列文章目录 往期文章回顾&#xff1a; 【LLM】二、python调用本地的ollama部署的大模型 【LLM】一、利用ollama本地部署大模型 目录 前言 一、open-webui是什么 二、安装 1.docker安装 2.源码安装 三、使用 四、问题汇总 总结 前言 前面的文章&#xff0c;我们已经…

探索Qt的QVariant:灵活的数据交换机制

&#x1f60e; 作者介绍&#xff1a;欢迎来到我的主页&#x1f448;&#xff0c;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff08;领取大厂面经等资料&#xff09;&#xff0c;欢迎加我的…

VMware使用技巧

目录 1. 系统快照 1.1 拍摄快照 1.2 查看快照 1.3 应用/删除快照 2. 克隆虚拟机 3. 删除虚拟机 1. 系统快照 1.1 拍摄快照 将当前系统的状态保存下来&#xff0c;如果将来系统出现不可修复的故障&#xff0c;使用快照可以恢复操作系统&#xff1b; CentOS7——拍照—…

【开源】基于RMBG的一键抠图与证件照制作系统【含一键启动包】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

数字化转型:企业法务管理的未来发展 ​​​

在数字化浪潮的推动下&#xff0c;企业法务管理正经历着前所未有的变革。传统的法务工作模式在数据处理、合同审查、风险评估等方面逐渐显得力不从心。面对这一挑战&#xff0c;企业法务管理的数字化转型成为提升效率、保障合规、优化法律服务的必然选择。 数字化转型涉及到法…

解析Xml文件并修改QDomDocument的值

背景&#xff1a; 我需要解决一个bug&#xff0c;需要我从xml中读取数据到QDomDocument&#xff0c;然后获取到我想要的目标信息&#xff0c;然后修改该信息。 ---------------------------------------------------------------------------------------------------------…