|
2024-03Python四级真题分数:100题数:38测试时长:60min一、单选题(共25题,共50分)1.运行如下代码,若输入整数3,则最终输出的结果为?(C)(2分)deff(x): ifx==1: s=1 else: s=f(x-1)*x returnsn=int(input("请输入一个大于1的整数:"))print(f(n)+f(n-1))A.2B.4C.8D.16答案解析:由于f(3)=f(2)*3,f(2)=f(1)*2,f(1)=1,所以f(3)+f(2)=6+2=8。2.运行下列程序,输出的结果是?(B)(2分)deffun(x): ifx>3: returnx*fun(x-1) else: returnx print(fun(6))A.120B.360C.720D.60答案解析:递归函数求解,根据递归函数6*5*4*3=3603.下列关于递归的描述不正确的是?(D)(2分)A.递归函数一定包含if语句B.递归函数体内一定包含调用自身的语句C.在调用自身函数时需要明确的边界终止条件与边界值D.递归算法一般代码简洁,执行效率高,空间复杂度低答案解析:递归算法一般代码简洁,易于理解,但执行效率较低,空间复杂度高。4.运行下列程序,输出的结果是?(D)(2分)deffun(a,n): s=0 foriinrange(1,n+1): temp=str(a)*i s+=int(temp) returnsprint(fun(1,3))A.3B.6C.12D.123答案解析:递推函数求解,本题是求1+11+111之和。5.运行下列程序,输出的结果是?(A)(2分)deffun(a,b): s=0 a=a[::-1] foriinrange(len(a)): s+=int(a[i])*b**i returnsprint(fun('45',16))A.69B.45C.64D.61答案解析:递推函数求解,本题是根据一个字符串和进制,转换成对应的十进制。6.一个荷花池,第一天荷花开放得很少,第二天开放的数量是第一天的两倍,之后的每一天,荷花都会以前一天两倍的数量开放。如果到第30天,荷花就开满了整个池塘,设第一天开一朵,编程求第30天共开了多少朵荷花。下面空白处的代码填写正确的是?(B)(2分)s=0t=1foriinrange(1, ① ): s+=t ② print(s)A.30,t=t*2B.31,t=t*2C.31,t+=2D.30,t*=2答案解析:递推函数求解,本题递推关系是t=t*2,循环次数是30次。7.解决下列问题时,时间复杂度最大的是?(C)(2分)A.输入n个不同的包含两位小数的实数,计算这n个数的和B.在n个数据中,查找数据kC.将n个数据用冒泡排序实现排序D.计算算式1-2+3-4+...-n的结果,n为偶数8.以下关于分治算法的描述正确的是?(B)(2分)A.各个子问题既相互独立又相互联系B.问题可以分解成若干个规模较小的相同问题C.可以直接对问题进行求解D.子问题的解不能合并成原问题的解答案解析:分治算法的特征,各个子问题相互独立,子问题的求解可以合并成原问题的解。9.下列选项中哪一项使用了分治算法?(A)(2分)A.二分搜索B.选择搜索C.插入搜索D.顺序搜索答案解析:二分查找体现了分治算法。10.不超过20个元素的降序数列,使用对分查找能找到指定的元素,可能的查找次数不包括?(D)(2分)A.3B.4C.5D.6答案解析:int(log220)+1=5。11.下面程序段的输出结果是?(C)(2分)defadd_Run(L=None): ifLisNone: L=['Lying'] else: L.append('Run') returnLadd_Run()print(add_Run())print(add_Run(['Lying']))A.['Lying']['Run']B.['Lying']['Lying']['Lying','Run']C.['Lying']['Lying','Run']D.[]['Lying','Run']答案解析:if分支定义列表,else分支添加列表元素。12.下面关于计数器的程序,输出结果正确的是?(A)(2分)count=0defincrement(): globalcount count+=1 print("计数器的值:",count)increment()increment()increment() A.计数器的值:1计数器的值:2计数器的值:3B.计数器的值:0计数器的值:1计数器的值:2C.计数器的值:1计数器的值:1计数器的值:1D.计数器的值:3答案解析:在函数内部可以通过关键字global来定义全局变量。13.下列程序段的输出结果是?(A)(2分)L=[]x=3def test(x): L.append(x) x=5test(x)print('L={},x={}'.format(L,x))A.L=[3],x=3B.L=[5],x=5C.L=[3],x=5D.L=3,x=5答案解析:函数内部定义变量x的值为5,只能作用于函数内部。14.以下程序,运行程序输出结果正确的是?(C)(2分)defdemo(x): returnx*2print(demo(demo(1)))A.return NoneB.2C.4D.8答案解析:调用二次,1乘以二次2,因此结果为4。15.Python使用下列哪个函数接收用户输入的数据?(B)(2分)A.accept()B.input()C.print()D.login()答案解析:在Python中,用于获取用户输入的函数是input()。16.下面程序段的输出结果正确的是?(C)(2分)def power(): x='python' y='world' z=x+""+y returnzprint(power())A.zB.x+""+yC.pythonworldD.python""world答案解析:该函数作用为连接字符串。17.下列关于Python函数的描述中,不正确的是?(B)(2分)A.自定义函数时用到的关键字是defB.在python函数中,至少有一条return语句C.函数print()可以一次输出多个参数,如print('1',"2",3,[4])D.用函数eval()可以用于求字符串里表达式的值,如eval('3+5-1')答案解析:函数可以有返回值,也可以没有返回值。需要返回值的函数,可以包含一条或者多条return语句;没有返回值的函数,不需要包含return语句。18.关于以下代码的描述中,正确的是?(A)(2分)#求两个正方形的面积差defMianJiCha(a,b): s=a**2-b**2 returnsa=5b=10c=MianJiCha(b,a)+aA.代码运行后,变量c的值是80B.函数名是MianJiCha(a,b)C.可以用MianJiCha(100)的形式调用此函数D.代码运行时会报错答案解析:s=10**2-5**2+5=100-25+5=8019.下列关于Python函数的说法中,错误的是?(D)(2分)A.利用函数可以降低编程复杂度,增加代码可读性B.函数可以重复调用C.函数可以降低修改代码的工作量D.调用函数时,每次都必须输入相同的参数值答案解析:有些函数需要输入参数才能调用,有些不需要。需要输入参数的函数在多次调用时,允许输入合法的不同参数。这也正是函数可复用的实现形式。20.下列选项中,调用下列代码定义的函数时,程序会报错的是?(D)(2分)defShuChu(a,b,c): print(c,b,a)A.ShuChu('1','2','3')B.ShuChu('1','2','3,4')C.ShuChu(1,2,3)D.ShuChu(1,2,3,4)答案解析:在使用位置实参的方式传值时,传入的实参个数必须与形参相同,否则运行程序会报错。21.下列选项中,调用以下代码定义的函数时,程序会报错的是?(A)(2分)defkp(a,b,c): print(a,b,c)A.kp(1,b=2,3)B.kp(a=3,b=1,c=2)C.kp(1,2,3)D.kp(1,b=2,c=3)答案解析:在函数调用时,采用位置实参与关键字实参混合传入参数时,位置实参必须放在关键字实参之前。22.下列代码的输出结果是?(C)(2分)>>>s=lambdam,n:m*n>>>s(6,6)A.6B.6,6C.36D.12答案解析:匿名函数中,冒号前面是参数列表,冒号后面是函数的返回值。m=6,n=6,s=m*n=6*6=3623.以下函数定义错误的选项是?(C)(2分)A.defaFunc(m,n): print(m,n)B.defaFunc(m,n=2): print(m,n)C.defaFunc(*m,n): print(m,n)D.defaFunc(m,*n): print(m,n)答案解析:*m表示是可变参数,可传入值的个数不确定。可变参数只能放在不可变参数的后面,不然解释器将不能识别哪些值传给可变参数,哪些值传给不可变参数。24.用于安装Python第三方库的工具是?(B)(2分)A.installB.pipC.WheelD.setup答案解析:pip是Python自带的第三方库的安装工具。25.编程时,如果只需要导入某第三方库中的某个成员,需要使用到的关键字是?(A)(2分)A.fromB.asC.intoD.inport答案解析:导入外部模块的某个成员,使用from关键字。二、判断题(共10题,共20分)26.若某个问题既能用递归算法求解,又能用递推算法求解,则使用递归方法求解更容易,效率也高得多。(错)答案解析:递归求解效率要低。27.如下代码因为递归的边界条件设置错误,产生了无限递归程序报错。(对)deffun(n): ifn>10: return0 else: returnn+fun(n-1)print(fun(10))答案解析:递归的边界条件设置错误,产生了无限递归程序报错。28.算法的时间复杂度与空间复杂度没有必然关系。(对)答案解析:算法的时间复杂度与空间复杂度没有必然关系。29.已知有n本按照书名拼音排序好的图书,使用对分查找法搜索其中任何一本书,最多查找次数为4次,则n的值有可能为10。(对)答案解析:根据二分查找最坏查找次数可得。30.函数定义语句def f(c=1,d=2,a,b):是正确的,因为默认值形参要放在前面。(错)答案解析:函数定义,默认值形参要放在后面。31.return语句可以返回任何数据类型的值,包括整数、浮点数、字符串、列表、元组、字典等。(对)答案解析:return语句可以用于在函数执行结束后返回一个值。这个值可以是任何类型,例如整数、浮点数、字符串、列表等等。32.defZiDian(**kwargs): print(kwargs)ZiDian(a=1)运行上面的代码后,输出结果为{'a':1}。(对)答案解析:当不确定需要传入的值是多少时,在定义形参时,可以使用*args(列表)、**kwargs(字典)来表示。在元素前加上**后,传入的值以字典的形式显示出来。33.以下代码可以正常运行,输出8。(错)defqh(a,b=3): print(a+b)qh(b=2,6)答案解析:在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。不然,程序会报错。34.代码>>>lambda:x=2,y=3:x+y的运行结果是5。(错)答案解析:匿名函数中冒号前面的部分表示参数列表,不能有赋值语句,不然会报“can'tassigntolambda”错误。35.使用pipinstall--upgradenumpy命令能够升级numpy科学计算库。(对)答案解析:pip的install--upgradenumpy指令用来升级外部模块。三、编程题(共3题,共30分)36.数的分解给出一个正整数a,要求分解成若干个正整数的乘积,即a=a1×a2×a3×...×an,并且1
|
|