Python软件编程等级考试四级——20220618

Python软件编程等级考试四级——20220618

理论

单选题

1、有如下Python程序,包含lambda函数,运行该程序后,输出的结果是?

g = lambda x,y:x*y
print(g(2,3))
A、2
B、3
C、6
D、8

2、运行下列程序,输出的结果是?

def dtox(x,base = 2):
    s = []
    while x>0:
        s.append(x % base)
        x = x // base
    return s
print(dtox(11))
A、程序错误
B、1101
C、[1,1,0,1]
D、[1,0,1,1]

3、下列哪项不是函数的优点?

A、提高代码的复用率
B、使得程序简洁,程序功能清晰
C、便于程序的修改,便于扩展
D、代码运行速度更快

4、下列关于函数的描述正确的是?

A、函数内的语句不会改变任何非全局变量的值
B、传入函数的参数都会以副本的形式存在函数中
C、函数的名称不能与Python的保留字相同
D、每个函数必须有一个return语句

5、Python中自定义函数的关键字是?

A、sub
B、def
C、function
D、void

6、运行下列程序,输出的结果是?

def nxs(x):
    s = 0
    while x:
        s = s * 10 + x % 10
        x //= 10
    return s

print(nxs(106))
A、106
B、610
C、160
D、601

7、Python编写的自定义函数dy,执行该程序段后,输出的结果是?

def dy(x,y):
    return x>y
print(dy(10,20))
A、10
B、20
C、False
D、True

8、
在函数中有一种叫空函数。 构造一个空函数,下面的横线处应填?( )
def 函数名( ):

_______

A、None
B、return None
C、pass
D、empty

9、下列代码的输出结果是?

def fun(a,b):
    t = a
    a = b
    b = t
    print(a, b)
fun(pow(3,2),pow(2,3))   #pow(x,y)返回x**y的值
A、3 2
B、8 9
C、2 3
D、9 8

10、函数中用return [表达式] 结束函数,选择性地返回一个值给调用方,有时不带表达式的return相当于返回?

A、0
B、None
C、1
D、False

11、对于下面的函数,用f(1,2,3)和f(1,2)两个调用语句,运行结果分别是?

def f(x,z,y=2):
    print(x+y+z)
A、都是5
B、65
C、都是6
D、56

12、下列这段程序的打印结果是?

def demo(item,lis=[]):
    lis=[]
    lis.append(item)
    return lis
print(demo('a'),end='')
print(demo('b'))
A、['a']['a', 'b']
B、['a']['b']
C、[][]
D、[]['b']

13、函数如下,以下哪个选项在调用该函数时会报错?

def showNumber(numbers):
    for n in numbers:
        print(n)
A、showNumber([2,4,5])
B、showNumber('abcesf' )
C、showNumber(3.4)
D、showNumber((12,4,5))

14、下列关键字中,用来导入第三方库的是?

A、include
B、from
C、import
D、continue

15、以下选项中,不属于第三方库安装工具pip能够实现的功能是?

A、安装一个第三方库
B、卸载已经安装的第三方库
C、修改已经安装的第三方库
D、查询已经安装的第三方库

16、关于评价算法的优劣,以下说法正确的是?

A、只要考虑是否得出正确答案
B、只要考虑算法的执行时间
C、只要考虑算法所占用的空间
D、从算法执行时间和需占用的空间两方面考虑

17、下列程序实现求菲波那契数列第4项的值:

def f(n):
    if n==1 or n==2:
        return 1
    elif n>2:
        return f(n-1)+f(n-2)
    else:
        return -1
print(f(4))

请问:这种解决方法属于哪种算法?

A、归纳
B、列举
C、递推
D、递归

18、著名的菲波那契数列为1,1,2,3,5,8,……。即除开始的两项为1外,其余每一项均为前两项之和。
下面的程序实现计算该数列的第4项值的大小。

n,a,b=4,1,1
if n==1:
    print("第%d个数为%d。"%_____(1)______)
if n==2:
    print("第%d个数为%d。"%(n,b))
if n>2:
    for i in range(2,n):
        result=a+b
        a,b=b,result
print("第%d个数为%d。"%(n,result))

请问:横线(1)所在位置不适合填入以下哪个选项?

A、(n, 1)
B、(n, a)
C、(n, b)
D、(a, n)

19、运行下列程序,输出的结果是?

def f(n):
    if n==1:
        return 1
    else:
        return f(n-1)+(n-1)*f(n-1)
print(f(4))
A、64
B、24
C、4
D、16

20、已知Pell数列定义如下:
在这里插入图片描述
第5项的值是?

A、29
B、30
C、12
D、32

21、运行下列程序,输出的结果是?

def Pell(n):
    if n==1:
        return 1
    if n==2:
        return 2
    if n>=3:
        return 2*Pell(n-1)+Pell(n-2)
print(Pell(4))
A、12
B、4
C、3
D、24

22、运行下列程序,输出的结果是?

def f(n):
    if n==1 or n==2:
        return 1
    elif n>2:
        return f(n-1)+f(n-2)
    else:
        return -1
print(f(-2))
A、-2
B、-1
C、出错
D、1

23、在1-20之间玩猜数字的游戏时,如果采用二分法的策略,并且给‘大了’或‘小了’的提示,最差的情况下多少次就可以猜中?

A、5
B、10
C、15
D、20

24、下列选项中,哪一项不是分治算法的特征?

A、问题的规模缩小到一定程度就可以容易解决
B、该问题分解除的子问题的解可以合并位该问题的解
C、各个子问题必须分解到不能分解为止
D、该问题具有最优子结构性质

25、下列排序算法中利用了分治算法思想的是?

A、冒泡排序
B、插入排序
C、选择排序
D、快速排序

判断题

26、Python中自定义函数的代码需要写在调用该函数之前。

27、Python定义函数时,可选参数必须写在非可选参数后面。

28、Python中编写函数时,必须指明该函数的返回值。

29、用户自定义函数是用户自己写的一段程序,一般包括函数名、参数、返回值、函数体等四部分。其中,函数名和参数是必不可少的部分。

30、自定义函数def块中的代码不是主程序的一部分,运行会跳过该段代码。

31、算法优化主要是为了减少冗余数据,优化时间复杂度和空间复杂度。

32、在Python中使用爬虫技术抓取网站信息需要用到第三方库。

33、对于递归而言,递推与回归,二者缺一不可。

34、递归算法跟递推算法是一样的,都在重复调用。

35、使用分治算法解决问题的一般步骤是分解、求解、合并。

实操

第一题

字符加密。将大写字母逐个按其ASCII值转换为7位二进制数,并在最左边补0,使得每个字母转换为8位二进制数,然后将8位二进制数每四位转为十六进制数。如明文是"CIE",加密后的密文是"434945"。编写的python程序如下,完善划线处的代码。

def xtob(n): #将整数转为二进制数 
    if n <= 1: 
        return str(n) 
    return  xtob(n//2)+  ①   
mingwen = "CIE" 
he = '0123456789ABCDEF' 
rst = '' 
for c in mingwen:
   s = "0" + xtob(ord(c)) #将明文转为8位二进制数 
   i = 0 
   data = 0
   while i < 8:
      data =data * 2 +  ②  
      if (i + 1) % 4 == 0: 
          rst = rst + he[data] 
          data = 0 
         ③   
print('密文是:',rst)

第二题

辗转相除法求最大公约数,下列函数是用递归算法实现的,请完善横线处的代码。

def gcd(a,b):
    m=a%b
    if m==0:
        return      ①     
    else:
        a=b
            ②      
        returnprint(gcd(12,18)) 

第三题

下面的程序运用分治算法寻找列表中的最大值。请将空格补全代码。

#子问题规模小于或等于2时
def zui_da_zhi(a_list):
    if   ①   :
        if a_list[0]>=a_list[1]:
            most=a_list[0]
        else:
            most=a_list[1]
    else:
        most=a_list[0]
    return most
# 分治算法排序
def fen_zhi(init_list):
    n=len(init_list)
    if n<=2:                  #若问题规模小于或等于2,解决
        return zui_da_zhi(init_list)
    #分解(子问题规模为n/2)
    left_list,right_list=   ②   
    #递归,分治
    left_max,right_max=   ③   
    #合并
    return zui_da_zhi([left_max,right_max])

#测试数据
test_data=[12,25,4,47,69,5,4,6,37,89,21]
print('最大值为:',fen_zhi(test_data))
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青岛少儿编程-王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值