2022-09 Python四级真题
分数:100
题数:38
测试时长:60min
一、单选题(共25题,每题2分,共50分)
1.下列不是评判一个算法优劣的标准是?(C)
A. 时间复杂度
B. 空间复杂度
C. 难易
D. 健壮性
答案解析:评价算法的优劣是:时间复杂度,空间复杂度,健壮性,正确性,可读性。因此选C。
2.某自定义函数中使用了3个变量,其中2个变量都指定了默认值,调用该函数时,参数的个数最少为几个?(D)
A. 0
B. 2
C. 3
D. 1
答案解析:在调用函数时,如果用户不传递或者少传递参数,则会采用默认值。2个变量有默认值,还有1个变量没有实际参数值,所以至少传递1个。
3.Python中用于字符与其ASCII码相互转换的内置函数是?(C)
A. float() abs()
B. pow() format()
C. ord() chr()
D. round() import()
答案解析:用于ASCII码相互转换的内置函数。
4.Python中,可以将数字类字符串转换成整数的函数是?(A)
A. int( )
B. float( )
C. bool( )
D. class( )
答案解析:Python将数字类字符串转换成整数的函数是int。
5.运行下列这段程序,正确的输出结果是?(B)
LS = ["apple", "red", "orange"]
def funb(a):
LS.append(a)
funb("yellow")
print(LS)
A. ["apple","red","orange"]
B. ["apple","red","orange","yellow"]
C. []
D. ["yellow"]
答案解析:该函数作用是添加列表元素。
6.下列代码的输出结果是?(C)
def func(a, b):
c=a**2+b
b=a
return c
a=10
b=2
c=func(b,a)+a
print(c,b)
A. 102 2
B. 24 10
C. 24 2
D. 102 10
答案解析:函数形参和实参。
7.
下列关于函数返回值的描述正确的是?()
A.
函数可以没有返回值,也可以有一个或多个返回值
B.
函数定义中最多含有一个return语句
C.
在函数定义中用return语句时,至少给一个返回值
D.
函数中 return语句只能放在函数定义的最后
试题编号:20220501-tr-006
试题类型:单选题
标准答案:A
试题难度:一般
答案解析:Python函数可以没有返回值。
8.
运行下列这段程序,正确的输出结果是?( )
def reverseA(s):
t=""
for i in range(0,len(s)):
t=s[i]+t
return t
print(reverseA("reverse"))
A.
esrever
B.
reverse
C.
rsereve
D.
rseveer
试题编号:20220501-tr-007
试题类型:单选题
标准答案:A
试题难度:一般
答案解析:依次读取字符串,倒置字符串内容
9.
下列导入pandas模块的方法不正确的是?( )
A.
import pandas
B.
import pandas as p
C.
import pandas *
D.
from pandas import *
试题编号:20220501-tr-033
试题类型:单选题
标准答案:C
试题难度:一般
答案解析:from pandas import *是正确的。
10.
Python中提供了大量的标准库模块,比如利用time模块可以获取计算机的时钟信息,包括日期和时间,若想要实现延时1分钟,则应该使用的语句是?( )
A.
sleep(3600)
B.
time.time(60)
C.
time.asctime(1)
D.
time.sleep(60)
试题编号:20220501-tr-034
试题类型:单选题
标准答案:D
试题难度:容易
答案解析:Python调用函数的格式。
11.
使用分治算法的基本步骤是?()
A.
分解、解决、合并
B.
分解、解决
C.
合并、解决
D.
合并、解决、分解
试题编号:20220501-zwy-018
试题类型:单选题
标准答案:A
试题难度:容易
答案解析:使用分治算法的基本步骤是分解、解决、合并。
12.
二分查找法是运用哪种策略实现的算法?()
A.
分治法
B.
贪心法
C.
回溯法
D.
动态规划法
试题编号:20220501-zwy-024
试题类型:单选题
标准答案:A
试题难度:容易
答案解析:二分查找法,也叫折半查找法。每次都通过跟区间的中间元素对比,
将待查找的区间缩小为之前的一半,直到找到要查找的元素。属于分治算法的思想。
13.
下列程序是分治算法的典型应用,其运行结果是?( )
def dividAndConquer(arr,left,right):
if (right == left + 1) or (right == left):
return max(arr[left],arr[right])
mid = int((left + right) / 2)
leftMax = dividAndConquer(arr,left,mid)
rightMax = dividAndConquer(arr,mid,right)
return max(leftMax,rightMax)
arr1 = [8, 1, 14, 19, 5]
print(dividAndConquer(arr1,0,4))
A.
1
B.
19
C.
8
D.
5
试题编号:20220501-zwy-025
试题类型:单选题
标准答案:B
试题难度:较难
答案解析:分治算法求数组最大元素的值。
14.
下列程序输出的结果是?( )
def change(a,b):
a=10
b+=a
a=4
b=5
change(a,b)
print(a,b)
A.
4 5
B.
10 5
C.
4 15
D.
10 15
试题编号:20220502-cj-006
试题类型:单选题
标准答案:A
试题难度:容易
答案解析:函数内为局部变量,所以主程序的a、b值并未改变。
15.
下列程序运行的结果是?( )
def a():
print("here")
b()
a()
def b():
print("there")
a()
b()
A.
出错
B.
死循环
C.
here
D.
here
there
试题编号:20220502-cj-007
试题类型:单选题
标准答案:A
试题难度:容易
答案解析:第一次调用b的时候,b还未被定义。
16.
设函数f定义如下:
def f(x,y = 0):
pass
下列选项执行时,出现错误的是?( )
A.
f(,2)
B.
f(1,2)
C.
f(1)
D.
f(1,)
试题编号:20220502-cj-009
试题类型:单选题
标准答案:A
试题难度:容易
答案解析:不指定形参名称的话,参数只能省略后面的。
17.
下列程序段运行的结果是?( )
def check(x = 2,y = 3):
print(x,y)
check(y=6,x=5)
A.
5 6
B.
6 5
C.
2 3
D.
3 2
试题编号:20220503-cj-003
试题类型:单选题
标准答案:A
试题难度:容易
答案解析:按形参名称传递参数。
18.
def AddApple(fruit=None):
if fruit is None:
fruit=[]
fruit.append('Apple')
return fruit
AddApple()
AddApple()
print(AddApple(['Pear']))
以上程序段运行的结果是?( )
A.
['Pear','Apple']
B.
['Pear','Apple','Apple']
C.
['Apple','Pear','Apple','Apple']
D.
['Apple']
试题编号:20220503-cj-004
试题类型:单选题
标准答案:A
试题难度:较难
答案解析:第一、二次调用AddApple,虽然都会返回值,但并没有对返回值做任何处理。
第三次调用AddApple,程序直接用print语句把返回值输出。
19.
def ThankYou(name):
print("感谢%s对公司的贡献!" %name)
ThankYou('张三')
ThankYou()
以上程序运行的结果是?()
A.
打印输出:感谢张三对公司的贡献!
然后报错:TypeError: ThankYou() missing 1 required positional argument: 'name'
B.
打印输出:
感谢张三对公司的贡献!
感谢对公司的贡献!
C.
无法输出。
D.
需要增加main函数才能正确运行。
试题编号:20220503-cj-005
试题类型:单选题
标准答案:A
试题难度:容易
答案解析:ThankYou第一次正常调用,第二次没带参数,所以报错。
20.
编写程序计算1+1/2+1/3+……+1/n的结果,可以使用哪种调用函数自身的算法?()
A.
枚举
B.
递归
C.
解析
D.
分治
试题编号:20220516-cqf-24
试题类型:单选题
标准答案:B
试题难度:容易
答案解析:递归算法的基本思想
21.
用下面的程序求解计算s=1+3+5+7+9的值,请选择横线处应填写的代码?( )
def Sum(n):
if n<=1:
return 1
else:
return ________
print(Sum(9))
A.
n+Sum(n-1)
B.
n+Sum(n+1)
C.
n+Sum(n+2)
D.
n+Sum(n-2)
试题编号:20220516-cqf-31
试题类型:单选题
标准答案:D
试题难度:较难
答案解析:算式的步长为2。
22.
下列选项中,哪一项不是递归函数必须要具备的条件?()
A.
明确的边界条件
B.
边界值
C.
循环语句
D.
终止条件
试题编号:20220516-cqf-32
试题类型:单选题
标准答案:C
试题难度:一般
答案解析:递归函数中不一定有循环语句。
23.
用递归算法实现5的阶乘,则下方的程序中横线上需要的代码是?( )
def func(n):
if n<_______:
return func(n+1)*n
else:
return 1
print(func(1))
A.
4
B.
5
C.
6
D.
7
试题编号:20220516-cqf-33
试题类型:单选题
标准答案:C
试题难度:较难
答案解析:if的判断表达式为n<a+1时,程序才能执行到n=a的情况。
24.
执行以下代码,程序的输出结果是?( )
def weight(n):
if n==1:
return 100
else:
return weight(n-1) +10
print(weight(3))
A.
100
B.
110
C.
120
D.
130
试题编号:20220516-cqf-34
试题类型:单选题
标准答案:C
试题难度:较难
答案解析:100+10+10
25.
以下关于递归与递推的说法,错误的是?()
A.
递归算法不涉及高深的数学知识,比较容易理解。
B.
递归过程一般通过函数或子过程来实现。
C.
递归算法是递推分解问题,然后再将最简单情况的解回归成大问题的解。
D.
存在既可以用递归算法解决,也可以用递推算法解决的问题。
试题编号:20220516-cqf-35
试题类型:单选题
标准答案:A
试题难度:一般
答案解析:递归算法虽然不涉及高深的数学知识,但是递归思想和模型并不容易理解。
二、判断题(共10题,共20分)
26.
函数中return语句只能放在函数定义的最后。( )
正确
错误
试题编号:20220501-tr-008
试题类型:判断题
标准答案:错误
试题难度:容易
答案解析:return语句只要在函数体内都可以,一旦执行,退出函数体。
27.
Python定义函数时如果没有参数,也不能省略后面的空括号。()
正确
错误
试题编号:20220501-tr-009
试题类型:判断题
标准答案:正确
试题难度:容易
答案解析:Python定义函数时空括号不可以省略。
28.
函数的参数分为形参和实参两种,函数调用中实参和形参的值可以互相传递。()
正确
错误
试题编号:20220501-tr-010
试题类型:判断题
标准答案:错误
试题难度:容易
答案解析:函数调用时,实参和形参之间的数据是单向的值传递,实参传递给形参是单向传递。
29.
导入模块中指定成员时,可采用的语句是:import 成员名1,成员名2 from 模块名。()
正确
错误
试题编号:20220501-tr-035
试题类型:判断题
标准答案:错误
试题难度:容易
答案解析:导入模块中指定成员时,可采用的语句是:from 模块名 import 成员名1,成员名2
30.
二分搜索、快速排序可以使用分治算法进行求解。()
正确
错误
试题编号:20220501-zwy-034
试题类型:判断题
标准答案:正确
试题难度:一般
答案解析:二分搜索、快速排序是分治算法的典型案例。
31.
调用带有默认值参数的函数时,不能为默认值参数传递任何值,只能使用函数定义时设定的默认值。( )
正确
错误
试题编号:20220503-cj-006
试题类型:判断题
标准答案:错误
试题难度:容易
答案解析:调用带有默认值参数的函数时,可以为默认值参数传递其它值。
32.
在Python中,可以在自定义函数中再定义函数。()
正确
错误
试题编号:20220503-cj-007
试题类型:判断题
标准答案:正确
试题难度:容易
答案解析:函数可以嵌套
33.
在定义一个函数时,如果出现调用自身的成分,则称为递推。()
正确
错误
试题编号:20220516-cqf-25
试题类型:判断题
标准答案:错误
试题难度:容易
答案解析:调用自身的成分是递归的特征。
34.
递归算法通常显得很简洁,因为多次调用自身,所以运行效率较高,
应该大力提倡用递归算法设计程序。()
正确
错误
试题编号:20220516-cqf-26
试题类型:判断题
标准答案:错误
试题难度:容易
答案解析:递归算法的效率不高,并不是首选算法,应该优先选择其他效率更高的算法。
35.
同样的问题使用不同的算法编程解决,其时间复杂度可能不一样。()
正确
错误
试题编号:20220428-fcl-029
试题类型:判断题
标准答案:正确
试题难度:容易
答案解析:不同的算法,时间复杂度可能不一样。
三、编程题(共3题,共30分)
36.
验证哥德巴赫猜想:任意一个大于等于4的偶数总可以分解为两个素数之和。请在下面的横线上补全代码,使得通过键盘输入一个偶数x(x<1000,输出这两个素数。如果有多组解,只需要输出一组,并且第一个素数要尽可能地小。例如,输入“10”,输出“3 7“;输入“18”,输出“5 13”。
def prime(x):
for i in range(2, x):
if x%i == 0:
return ①
return 1
x=int(input("输入一个偶数x:"))
for k in range( ② ,x//2+1):
if prime(k) and prime( ③ ):
print( ④ )
break
试题编号:20220501-tr-036
试题类型:编程题
标准答案:
参考程序:
def prime(x):
for i in range(2, x):
if x%i == 0:
return 0
return 1
x=int(input("输入一个数x:"))
for k in range(2,x//2+1):
if prime(k) and prime(x-k):
print(k,x-k)
break
试题难度:一般
答案解析:
评分标准:
(1) 0 或等效答案 ;(3分)
(2) 2 或等效答案 ;(3分)
(3) x-k 或等效答案 ; (3分)
(4) k,x-k 或等效答案 。 (3分)
37.
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数,例如12321、765567就是回文数。请补全下列代码,编程实现用分治的方法判断一个整数是否是回文数。
def ispel(s):
num = len( ① )
if num == 0:
return False
if num == 1:
return True
if num == 2:
return s[0] == ②
else:
return s[0] == s[num - 1] and ispel(s[1: ③ ])
st = input("请输入一个整数:")
if ④ == True:
print("输入的是回文数")
else:
print("输入的不是回文数")
试题编号:20220501-zwy-036
试题类型:编程题
标准答案:
参考程序:
def ispel(s):
num = len(s)
if num == 0:
return False
if num == 1:
return True
if num == 2:
return s[0] == s[1]
else:
return s[0] == s[num - 1] and ispel(s[1:num - 1])
st = input("请输入一个整数:")
if ispel(st) == True:
print("输入的是回文数")
else:
print("输入的不是回文数")
试题难度:一般
答案解析:
评分标准:
① s或等效答案 ; (2分)
② s[1]或等效答案 ; (2分)
③ num-1或等效答案 ; (2分)
④ ispel(st) 或等效答案。(2分)
38.
小青蛙爬楼梯。楼梯有n级。小青蛙每次只能爬1级或2级。
当楼梯只有1级时,青蛙只有1种爬法。
当楼梯有2级时,青蛙有2种爬法:一次爬2级;一次爬1级,爬2次。
请从键盘上接收楼梯级数n,输出青蛙有几种爬法。
示例输入
请输入楼梯级数:8
示例输出
8级楼梯共有34种爬法。
程序如下:
def Climb(n):
if ①:
return 1
elif n==2:
②
else:
return③
n=int(input("请输入楼梯级数:"))
if n>0:
print("%d级楼梯共有%d种爬法。"%(④,⑤))
试题编号:20220505-cj-001
试题类型:编程题
标准答案:
参考程序:
def Climb(n):
if n==1:
return 1
elif n==2:
return 2
else:
return Climb(n-1)+Climb(n-2)
n=int(input("请输入楼梯级数:"))
if n>0:
print("%d级楼梯共有%d种爬法。"%(n,Climb(n)))
试题难度:容易
答案解析:
评分标准:
(1)n==1; (2分)
(2)return 2; (2分)
(3)Climb(n-1)+Climb(n-2); (2分)
(4)n; (2分)
(5)Climb(n).(2分)