GESP2024年03月Python五级试卷

从PDF导入:GESP2024年03月Python五级试卷

Python 180分钟 总分 100.0 27 题
试卷题目预览
第1题 中级 2.0分 单选
下面流程图在yr输入2024时,可以判定yr代表闰年,并输出2月是29天,则图中菱形框中应该填入( )。

A. (yr % 400 == 0) or (yr % 4 == 0)
B. (yr % 400 == 0) or (yr % 4 == 0 and yr %100 != 0)
C. (yr % 400 == 0) and (yr % 4 == 0)
D. (yr % 400 == 0) and (yr % 4 == 0 and yr % 100 != 0)
第2题 中级 2.0分 单选
在TCP协议中,完成连接建立需要通过( )握手。
A. 一次
B. 二次
C. 三次
D. 四次
第3题 中级 2.0分 单选
下面有关排序算法的说法,正确的是( )
A. 快速排序是稳定排序
B. Python中list类型的sort()是稳定排序
C. 冒泡排序是不稳定排序
D. 归并排序是不稳定排序
第4题 中级 2.0分 单选
不同的排序算法,其空间复杂度也不同。与冒泡法排序空间复杂度相同的是( )
A. 归并排序
B. 快速排序
C. 计数排序
D. 插入排序
第5题 中级 2.0分 单选
下面Python代码中,aFactorial()和bFactorial()用于求正整数的阶乘。有关说法,错误的是( )。

def aFactorial(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
def bFactorial(n):
if n <= 1:
return 1
return n * bFactorial(n - 1)

A. aFactorial()用循环方式,bFactorial()递归方式
B. bFactorial()更加符合数学定义,直观易于理解
C. 当N值较大时,aFactorial()执行效率更高
D. bFactorial()因为代码量较少,没有循环,因此其执行效率更高
第6题 中级 2.0分 单选
有关下面Python代码的说法,正确的是( )。

def qSort(iterData):
if len(iterData) <= 1:
return iterData
pivot = iterData[len(iterData) // 2]
left = [x for x in iterData if x < pivot]
middle = [x for x in iterData if x == pivot]
right = [x for x in iterData if x > pivot]
return qSort(left) + middle + qSort(right)

A. 代码中qSort()函数不是稳定排序
B. 代码中qSort()函数空间复杂度为O(1)
C. 代码中qSort()函数是就地排序
D. qSort()函数是外排序
第7题 中级 2.0分 单选
上题不能支持其他常见类型的排序,如实现该支持,横线处分别应填写代码是( )。

def qSort(iterData):
if ____________: # 横线处
return iterData
# ... 其余代码
______________ # 横线处
return qSort(left) + middle + qSort(right)

A. isinstance(iterData, list) == False, lst = [x for x in iterData]
B. type(iterData) == list, lst = [x for x in iterData]
C. isinstance(iterData, list), lst = list(iterData)
D. type(iterData) != list, lst = list(iterData)
第8题 中级 2.0分 单选
上上题qSort()函数不支持排序规则函数,形如sorted()函数的key参数,为实现类似目标,横线处分别应填入代码是( )。
A. fx == None, fx(x) >= fx(Pivot), fx(x) < fx(Pivot)
B. fx == None, fx(x) >= Pivot, fx(x) < Pivot
C. fx != None, fx(x) >= fx(Pivot), fx(x) < fx(Pivot)
D. fx != None, fx(x) >= Pivot, fx(x) < Pivot
第9题 中级 2.0分 单选
下面的Python代码中merge()函数的两个参数均为list类型,且是已按相同规则排序的数据。下面有关说法中,正确的是( )。

def merge(arr1, arr2):
result = []
while arr1 and arr2:
if arr1[0] <= arr2[0]:
result.append(arr1.pop(0))
else:
result.append(arr2.pop(0))
result.extend(arr1)
result.extend(arr2)
return result

A. 第3-7行代码将导致死循环
B. 第5行和第7行代码执行后,result的成员值为None
C. 第9行和第11行是否被执行与arr1和arr2的成员值有关
D. merge()函数的代码没有错误,执行后参数arr1和arr2将合并成新的list保存到result之中
第10题 中级 2.0分 单选
阅读下面Python代码,横线处应填入( )。

def isOdd(n):
return n % 2 == 1
def isEven(n):
return n % 2 == 0
def filterList(lst, func):
return [x for x in lst if func(x)]
print(filterList(range(1, 11), ________))
print(filterList(range(1, 11), ________))

A. isOdd, isEven
B. isOdd, isEven(10)
C. isOdd(10), isEven
D. isOdd(10), isEven(10)
第11题 中级 2.0分 单选
下面Python代码的平均时间复杂度是( )。

def func(n):
result = 0
for i in range(1, n + 1):
for j in range(1, i + 1):
result += i * j
return result

A. O(n)
B. O(log n)
C. O(n²)
D. O(n³)
第12题 中级 2.0分 单选
有关下面Python代码的说法,正确的是( )。

def binarySearch(iterData, queryVal):
def __bSearch(left, right):
if left > right:
return -1
mid = (left + right) // 2
if iterData[mid] == queryVal:
return mid
elif iterData[mid] > queryVal:
return __bSearch(left, mid - 1)
else:
return __bSearch(mid + 1, right)
return __bSearch(0, len(iterData) - 1)

A. 代码采用二分法查找,仅对有序list有效,不适用于set、dict等
B. 在函数内定义函数,存在多次调用多次定义,因此存在错误
C. 第16行代码__bSearch()最后一个参数val应为queryVal
D. 第16行代码应为return __bSearch
第13题 中级 2.0分 单选
在上题的算法中,其时间复杂度是( )。
A. O(1)
B. O(n)
C. O(log n)
D. O(n²)
第14题 中级 2.0分 单选

下面的Python代码中,idList变量为list类型,保存有大量身份编码,倒数第二位如为偶数,则为女性,奇数为男性,从第7位开始连续8位为出生年月日,年为4位数月和日均为两位数。编码统计每天有几位男生生日女生生日。横线处应填入代码是( )。
# 统计生日信息
birthdayCount = {}
for id in idList:
birthDate = id[6:14]
gender = int(id[-2]) % 2
birthdayCount[birthDate] = birthdayCount.get(birthDate, _________)
birthdayCount[birthDate] = (birthdayCount[birthDate][0] + _________[0],
birthdayCount[birthDate][1] + _________[1])

A. (1, 0) if gender == 1 else (1, 0), (0, 1)
B. (0, 1) if gender == 1 else (1, 0), (0, 0)
C. 0, 1 if gender == 1 else 1, 0, 0, 0
D. (0, 1) if gender == 1 else (1, 0), (0, 0)
第15题 中级 2.0分 单选
有关下面Python代码的说法错误的是( )。

class Node:
def __init__(self, data):
self.data = data
self.next = None
self.prev = None
# 创建三个节点
firstNode = Node(1)
secondNode = Node(2)
thirdNode = Node(3)
# 链接节点
firstNode.next = secondNode
secondNode.prev = firstNode
secondNode.next = thirdNode
thirdNode.prev = firstNode
# 删除第二个节点
firstNode.next = thirdNode
thirdNode.prev = firstNode

A. 第17行执行后,firstNode的下一个节点指向第3个节点
B. 第18行执行后,第3个节点的Previous指向第1个节点
C. 仅仅通过firstNode节点,不能访问第2个节点,第2个节点已不在内存中存在
D. 在第18行后,执行del secondNode后,第2个节点所占内存才会被释放
第16题 中级 2.0分 判断
一个算法设计合理的话是可以没有输出的,比如冒泡排序就不输出任何信息。( )
T. 正确
F. 错误
第17题 中级 2.0分 判断
流程图描述算法的能力是有限的,比如它无法对能够提前终止的循环给出等价描述。( )
T. 正确
F. 错误
第18题 中级 2.0分 判断
归并排序的空间复杂度是O(n)。( )
T. 正确
F. 错误
第19题 中级 2.0分 判断
在Python中,当对dict类型进行in运算查找元素是否存在时,其时间复杂度为O(1),set类型也如此。( )
T. 正确
F. 错误
第20题 中级 2.0分 判断
在以下Python代码中,执行后输出是5=>4=>3=>2=>1=>2=>3=>2=>1=>5。( )

def printLinkedList(node):
if node:
print(node.data, "=>", end="")
printLinkedList(node.next)
print(node.data, "=>", end="")

T. 正确
F. 错误
第21题 中级 2.0分 判断
贪心算法虽然可能不是局部最优,但可达到全局最优。( )
T. 正确
F. 错误
第22题 中级 2.0分 判断
Python内置函数sorted()可对支持for-in循环的数据类型排序。( )
T. 正确
F. 错误
第23题 中级 2.0分 判断
冒泡排序是就地排序,空间复杂度为O(1)。( )
T. 正确
F. 错误
第24题 中级 2.0分 判断
下面的Python代码能实现N的质因数分解,类似埃氏筛法。( )

def primeFactorization(n):
i = 2
while i * i <= n:
while n % i == 0:
print(i, end=" ")
n //= i
i += 1
if n > 1:
print(n)

T. 正确
F. 错误
第25题 中级 2.0分 判断
Python代码print(sorted(list(range(10,20)), key = hex))执行后将输出[10, 11, 12, 13, 14, 1
T. 正确
F. 错误
第26题 中级 25.0分 编程
成绩排序

时间限制:1.0 s
内存限制:512.0 MB
题面描述
有N名同学,每名同学有语文、数学、英语三科成绩。你需要按如下规则对所有同学的成绩从高到低排序:1. 比较总分,高者靠前;2. 如果总分相同,则比较语文和数学两科总分,高者靠前;3. 如果仍相同,则比较语文和数学两科的最高分,高者靠前;4. 如果仍相同,则二人并列。你需要输出每位同学的排名,如遇k人并列,则他们排名相同,并留空后面的k-1个名次。

【输入格式】
第一行一个整数N,表示同学的人数
接下来N行,每行三个非负整数c, m, e分别表示该名同学的语文、数学、英语成绩。保证1 ≤ N ≤ 1000。
【输出格式】
输出格式输出N行,按输入同学的顺序,输出他们的排名
【样例】
样例输入
6
140 140 150
140 149 140
148 141 140
141 148 140
145 145 139
0 0 0
样例输出
1
3
4
4
2
6
数据范围
对于30%的测试点,保证N ≤ 10,且所有同学的总分各不相同。
对于所有测试点,保证N ≤ 1000。
第27题 中级 25.0分 编程
B-smooth数

时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨同学想寻找一种名为B-smooth数的正整数。如果一个正整数的最大质因子不超过B,则该正整数为B-smooth数。小杨同学想知道,对于给定的n和B,有多少个不超过n的B-smooth数。

【输入格式】
第一行包含两个正整数n, B,含义如题面所示。
【输出格式】
输出一个非负整数,表示不超过n的B-smooth数的数量。
【样例】
样例输入
10 3
样例输出
7
样例解释
在不超过10的正整数中,3-smooth数有1, 2, 3, 4, 6, 8, 9,共7个。
数据范围
对于全部数据,保证有1 ≤ n ≤ 1000000,1 ≤ B ≤ 1000。
💬