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 1
		
	fiboList = [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 -= coin
	return coins_used
	
coins = [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 = 0
	for 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 < b
	
lstData = 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 - 1
		while j >= 0 and key < lst[j]:
			lst[j + 1] = lst[j]
			j -= 1
		lst[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) + 1
	return 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] = False
	for i in range(2,int(N ** 0.5) + 1):
		if primeList[i] != False:
			for j in range(_____________):
				primeList[j] = False
	return [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] + rst
	n //= 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 = 0
	for i in range(1, m+1):
		for j in range(i, m+1):
			num = []
			now = 0
			for l in range(1, n+1):
				tmp = sum_w[l][j] - sum_w[l][i-1]
				now += tmp
				num.append(now)
				if now >= k:
					if ans == 0:
						ans = (j-i+1) * l
					else:
						ans = min(ans, (j-i+1) * l)
					L, R = 1, l
					while L < R:
						mid = (L + R + 1) // 2
						if now - num[mid-1] >= k:
							L = mid
						else:
							R = mid - 1
					if 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] * N

def calc(x):
	i = 2
	mp = {}
	while i * i <= x:
		if x % i == 0:
			mp[i]=1
			while x % i == 0:
				x //= i
		i += 1
	if x != 1:
		mp[x]=1
	return 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()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue实例和容器的一夫一制——04

//准备容器 <div classapp> <h1>{{mag}}</h1> </div> //准备容器 <div classapp> <h1>{{mag}}</h1> </div> //准备容器 <div classapp2> <h1>{{name}}</h1> </div> <script> // 验…

深度整合全球资源,分贝通打造高效、合规的海外差旅管理平台

在全球化商业活动的背景下,中国企业出海已成为常态。然而,随着海外差旅市场的全面增长,企业在海外支出管理上面临诸多挑战。据2023年数据显示,分贝通出海差旅业务GMV同比增长高达500倍,这一增长背后隐藏着企业对于更省钱、更高效管控方式的迫切需求。 面对与日俱增的开支,企业开…

嵌入式代码升级——IAP

目录 IAP的特点 实现 IAP 功能 STM32 正常的程序运行流程 STM32 加入IAP后的运行流程 程序执行流程 BootLoader程序 APP1程序 APP2程序 验证操作步骤 IAP&#xff08;In-Application Programming&#xff09;指的是在应用程序运行时对其自身的Flash存储器进行编程的操作…

LLM - Transformer 的 多头自注意力(MHSA) 理解与源码

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/140281680 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 在 Transformer 中,多头自注意力机制 (MHSA, Multi-Head Self-Attenti…

【pytorch18】Logistic Regression

回忆线性回归 for continuous:y xwbfor probability output:yσ(xwb) σ:sigmoid or logistic 线性回归是简单的线性模型&#xff0c;输入是x&#xff0c;网络参数是w和b&#xff0c;输出是连续的y的值 如何把它转化为分类问题?加了sigmoid函数&#xff0c;输出的值不再是…

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

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

挂耳式耳机哪款比较好、挂耳式耳机推荐高性价比

近年来&#xff0c;开放式耳机行业蓬勃发展&#xff0c;受到了越来越多消费者的喜爱&#xff0c;然而&#xff0c;这里边也夹着不专业的产品&#xff0c;低质量的生产不仅不能带来舒适的体验&#xff0c;甚至可能对耳朵造成潜在的伤害。挂耳式耳机哪款比较好&#xff1f;为了帮…

初识STM32:寄存器编程 × 库函数编程 × 开发环境

STM32的编程模型 假如使用C语言的方式写了一段程序&#xff0c;这段程序首先会被烧录到芯片当中&#xff08;Flash存储器中&#xff09;&#xff0c;Flash存储器中的程序会逐条的进入CPU里面去执行。 CPU相当于人的一个大脑&#xff0c;虽然能执行运算和执行指令&#xff0c;…

WPF依赖附加属性

依赖附加属性的定义 基本过程&#xff1a;声明、注册、包装 依赖附加属性必须在依赖对象&#xff0c;附加属性不一定&#xff0c;关注的是被附加的对象是否是依赖对象 快捷方式&#xff1a;propa tab 关键字&#xff1a;RegisterAttached // 方法封装 public static int …

Java客户端调用SOAP方式的WebService服务实现方式分析

简介 在多系统交互中&#xff0c;有时候需要以Java作为客户端来调用SOAP方式的WebService服务&#xff0c;本文通过分析不同的调用方式&#xff0c;以Demo的形式&#xff0c;帮助读者在生产实践中选择合适的调用方式。 本文JDK环境为JDK17。 结论 推荐使用Axis2或者Jaxws&#…

推出全新的无线通讯模块(1SJ型、2DT-158型、2GT-001型、1YN型、2AE型)助力物联网新发展

相关型号&#xff1a;LBAA0QB1SJ-296 LBAA0XV2DT-158 LBAA0XV2GT-001 LBEE5KL1YN-814 LBEE5PK2AE-564 全新的无线通讯模块&#xff08;1SJ型、2DT-158型、2GT-001型、1YN型、2AE型&#xff09;助力物联网新发展&#xff08;明佳达&#xff09; 1、1SJ型集成LoRaWAN调制解调器…

优劣分析:重启路由器 vs 使用IP代理

目前更换IP主要有两种常见方法&#xff0c;一种是重启路由器&#xff0c;另一种是使用代理IP&#xff0c;那么&#xff0c;这两种方法有什么优缺点呢&#xff1f;下面我们一起来探讨一下。 方法一&#xff1a;重启路由器变换IP 优点 1. 操作简单&#xff1a;只需断开路由器电…

『C + ⒈』‘\‘

&#x1f942;在反斜杠(\)有⒉种最常用的功能如下所示&#x1f44b; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main(void) {int a 10;int b 20;int c 30;if (a 10 &&\b 20 &&\c 30){printf("Your print\n");}else{prin…

解锁AI大模型潜能:预训练、迁移学习与中间件编程的协同艺术

在人工智能的浩瀚星空中&#xff0c;大型预训练模型&#xff08;Large Language Models, LLMs&#xff09;犹如璀璨的星辰&#xff0c;引领着技术革新的浪潮。这些模型通过海量数据的滋养&#xff0c;学会了理解语言、生成文本乃至执行复杂任务的能力。然而&#xff0c;要让这些…

可以拖拽的富文本编辑器(VueDragResize,quill-editor)

该功能实现一个帮助文档的展示和编辑功能&#xff0c;默认进去只能查看帮助文档的内容&#xff0c;点击编辑可以进行富文本编辑器的编辑功能。 出现的问题1.如何隐藏富文本编辑的工具栏并且禁止编辑 //隐藏工具栏this.toolbar this.$refs.myTextEditor.quill.getModule(toolb…

LeetCode之无重复字符的最长子串

1.题目链接 3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/ 2.题目解析 题目主要思路其实是滑动窗口&#xff0c;使用两个指针维护一个动态区间&#xff0c;使…

价格疑云?格行WiFi创始人亲解谜团,性价比之王如何炼成?

随身wifi行业乱象频出&#xff0c;作为行业领跑品牌的格行随身wifi&#xff0c;关于价格问题一直备受质疑。关于设备上的“格行自有格行的骄傲”也被外界认定为是自大&#xff0c;甚至发展的线下一万多家门店也被同行不认可。近日&#xff0c;企业财经专访记者有幸采访了格行随…

实时消息推送系统,写得太好了!

websocket 协议是在 http 协议上的一种补充协议&#xff0c;是 html5 的新特性&#xff0c;是一种持久化的协议。其实 websocket 和 http 关系并不是很大&#xff0c;不过都是属于应用层的协议&#xff0c;接下来我们就开始实战。 websocket 定时推送 本教程基于 springboot …

华为od相关信息分享

2024年OD统一考试&#xff08;D卷&#xff09;完整题库&#xff1a;华为OD机试2024年最新题库&#xff08;Python、JAVA、C合集&#xff09; 问 1.什么是华为od&#xff1f; 答&#xff1a;OD全称是Outsourcing Dispacth&#xff0c;即外包派遣&#xff0c;是华为和外企德科…

HTML 标签简写及全称:表格内容将通过JavaScript动态生成

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML 标签简写及全称</title><style>…