2024年6月CCF—GESP(Python五级)编程能力等级认证试卷
五级
2024
2025-02-17 18:41:19
85次
一、单选题
下面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] |
【知识点】 CCF—GESP Python五级
下面是埃氏素数筛的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 |
【知识点】 CCF—GESP Python五级
有关下面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()函数没有返回值,没有最终达到排序效果 |
【知识点】 CCF—GESP Python五级
下面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. 递归算法 |
【知识点】 CCF—GESP Python五级
下面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. 递归算法 |
【知识点】 CCF—GESP Python五级
汉字的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 } |
【知识点】 CCF—GESP Python五级
在下面的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)] |
【知识点】 CCF—GESP Python五级
求回文子字符串,如:在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] |
【知识点】 CCF—GESP Python五级
有关下面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)) 存在错误 |
【知识点】 CCF—GESP Python五级
二、判断题
下面的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) | A.正确 | B.错误 |
【知识点】 CCF—GESP Python五级
三、编程题
小杨的幸运数字
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨认为他的幸运数字应该恰好有两种不同的质因子,例如,12=2×2×3 的质因子有2,3,恰好为两种不同的质因子,因此12是幸运数字,而30=2×3×5 的质因子有2,3,5,不符合要求,不为幸运数字。
小杨现在有n个正整数,他想知道每个正整数是否是他的幸运数字。
输入格式
第一行包含一个正整数n,代表正整数个数。
之后n行,每行一个正整数。
输出格式
输出n行,对于每个正整数,如果是幸运数字,输出1,否则输出0。
输入样例
3 7 12 30
输出样例
0 1 0
样例解释
7的质因子有7,只有一种。
12的质因子有2,3 ,恰好有两种。
30的质因子有2,3,5,有三种。
数据范围

对于全部数据,保证有1≤n≤104,每个正整数ai满足 2≤ai≤106。
【知识点】 CCF—GESP Python五级
黑白格
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨有一个n行m列的网格图,其中每个格子要么是白色,要么是黑色。
小杨想知道至少包含k个黑色格子的最小子矩形包含了多少个格子。
输入格式
第一行包含三个正整数n,m,k,含义如题面所示。
之后n行,每行一个长度为m的01串,代表网格图第i行格子的颜色,如果为0,则对应格子为白色,否则为黑色。
输出格式
输出一个整数,代表至少包含k个黑色格子的最小子矩形包含格子的数量,如果不存在则输出0。
输入样例
4 5 5 00000 01111 00011 00011
输出样例
6
样例解释
对于样例1,假设 (i,j) 代表第i行第j列,至少包含5个黑色格子的最小子矩形的四个顶点为 (2,4),(2,5),(4,4),(4,5),共包含6个格子。
数据范围

对于全部数据,保证有 1 ≤ n , m ≤ 100 , 1 ≤ k ≤ n × m
【知识点】 CCF—GESP Python五级
