GESP Python 5级 2024.03
下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 ,则图中菱形框中应该填入

(yr % 400 == 0) or (yr % 4 == 0)
( yr % 400 == 0) or (yr % 4 == 0 and yr %100 != 0)
( yr % 400 == 0) and ( yr % 4 == 0)
(yr % 400 == 0) and (yr % 4 == 0 and yr % 100 != 0)
在TCP协议中,完成连接建立需要通过( )握手。
一次
二次
三次
四次
下面有关排序算法的说法,正确的是
快速排序是稳定排序
Python中list类型的sort()是稳定排序
冒泡排序是不稳定排序
归并排序是不稳定排序
不同的排序算法,其空间复杂度也不同。与冒泡法排序空间复杂度相同的是
归并排序
快速排序
计数排序
插入排序
下面Python代码中,aFactorial()和bFactorial()用于求正整数的阶乘。有关说法,错误的是
def aFactorial(N):
rst = 1
for i in range(1,N + 1):
rst *=i
return rst
def bFactorial(N):
if N == 1 or N == 0:
return 1
return N * bFactorial(N-1)
print(aFactorial(10),bFactorial(10))
aFactorial( )用循环方式,bFactorial()递归方式
bFactorial( )更加符合数学定义,直观易于理解,而aFactorial()需要将数学定义转换为计算机程序实现
当N值较大时,aFactorial( )执行效率更高,而bFactorial()因为有多次函数调用,效率将降低,且N如果较大,
将可能导致不能使用
bFactorial( )因为代码量较少,没有循环,因此其执行效率更高
有关下面Python代码的说法,正确的是
def qSort(1st):
if len(lst) Pivot]
return qSort(Less) + [Pivot] + qSort(Greater)
1stA = [1,2,11,12,21,21,2,3,41,4,3]
lstB = qSort(1stA)
print(1stA,1stB)
代码中qSort()函数不是稳定排序
代码中qSort()函数空间复杂度为O(1)
代码中qSort()函数是就地排序
代码中qSort()函数是外排序,因为排序后的结果保存在新的内存空间即外空间
上题不能支持其他常见类型的排序,如实现该支持,横线处分别应填写代码是
def qSort(iterData):
if________________:
________________
else:
lst = iterData
if len(1st) Pivot]
return qSort(Less) + [Pivot] + qSort(Greater)
tp1A = (1,2,11,12,21,21,2,3,41,4,3)
lstB = qSort(tplA)
print(tplA,1stB)
isinstance(iterData, list) == False , st == [x for x in iterData]
type(iterData) == list , lst = [x for x in iterData]
isinstance(iterData, list) , lst = list(iterData)
type(iterData) != list , lst = list(iterData)
上上题qSort()函数不支持排序规则函数,形如sorted()函数的key参数,为实现类似目标,横线处分别应填入代码是( )。
def qSort(1st,fx = None):
if len(1st) Pivot]
return qSort(Less,fx) + [Pivot] + qSort(Greater,fx)
1stA = [1,2,11,12,21,21,2,3,41,4,3]
1stB = qSort(1stA,lambda x:x % 10)
print(1stA,lstB)
fx == None , fx(x) >= fx(Pivot) , fx(x) < fx(Pivot)
fx == None , fx(x) >= Pivot , fx(x) < Pivot
fx != None , fx(x) >= fx(Pivot) , fx(x) < fx(Pivot)
fx != None , fx(x) >= Pivot , fx(x) < Pivot
下面的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))
if arr1:
result += arr1
if arr2:
result += arr2
return result
第3-7行代码将导致死循环,因为没有循环变量及其改变
第5行和第7行代码执行后,result的成员值为None
第9行和第11行是否被执行,与arr1和arr2的成员值有关,如果值转换为False,将不会被执行
merge()函数的代码没有错误,执行后参数arr1和arr2将合并成新的list保存到result之中,且有序
阅读下面Python代码,横线处应填入
def Check(N,Fx):
return Fx(N)
def isodd(N):
return "偶数" if N % 2 == 0 else "奇数"
isEven = 1ambda N:"偶数" if N % 2 == 0 else "奇数"
print(Check(10,________________),Check(11,________________))
isOdd , isEven
isOdd , isEven(10)
isOdd(10) , isEven
isOdd(10) , isEven(10)
