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


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

    理论

    单选题

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

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

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

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

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

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

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

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

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

    A、sub
    B、def
    C、function
    D、void
    
    • 1
    • 2
    • 3
    • 4

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

    def nxs(x):
        s = 0
        while x:
            s = s * 10 + x % 10
            x //= 10
        return s
    
    print(nxs(106))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    A、106
    B、610
    C、160
    D、601
    
    • 1
    • 2
    • 3
    • 4

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

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

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

    _______

    A、None
    B、return None
    C、pass
    D、empty
    
    • 1
    • 2
    • 3
    • 4

    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的值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    A、3 2
    B、8 9
    C、2 3
    D、9 8
    
    • 1
    • 2
    • 3
    • 4

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

    A、0
    B、None
    C、1
    D、False
    
    • 1
    • 2
    • 3
    • 4

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

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

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

    def demo(item,lis=[]):
        lis=[]
        lis.append(item)
        return lis
    print(demo('a'),end='')
    print(demo('b'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    A、['a']['a', 'b']
    B、['a']['b']
    C、[][]
    D、[]['b']
    
    • 1
    • 2
    • 3
    • 4

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

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

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

    A、include
    B、from
    C、import
    D、continue
    
    • 1
    • 2
    • 3
    • 4

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

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

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

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

    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))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

    A、归纳
    B、列举
    C、递推
    D、递归
    
    • 1
    • 2
    • 3
    • 4

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    A、(n, 1)
    B、(n, a)
    C、(n, b)
    D、(a, n)
    
    • 1
    • 2
    • 3
    • 4

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

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

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

    A、29
    B、30
    C、12
    D、32
    
    • 1
    • 2
    • 3
    • 4

    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))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    A、12
    B、4
    C、3
    D、24
    
    • 1
    • 2
    • 3
    • 4

    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))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    A、-2
    B、-1
    C、出错
    D、1
    
    • 1
    • 2
    • 3
    • 4

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

    A、5
    B、10
    C、15
    D、20
    
    • 1
    • 2
    • 3
    • 4

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

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

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

    A、冒泡排序
    B、插入排序
    C、选择排序
    D、快速排序
    
    • 1
    • 2
    • 3
    • 4

    判断题

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    第二题

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

    def gcd(a,b):
        m=a%b
        if m==0:
            return      ①     
        else:
            a=b
                ②      
            returnprint(gcd(12,18)) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    第三题

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

    #子问题规模小于或等于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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
  • 相关阅读:
    jdbc-plus是一款基于JdbcTemplate增强工具包, 基于JdbcTemplate已实现分页、多租户等插件,可自定义扩展插件
    为什么c++支持函数重载,c语言不支持
    c++在线编辑器
    常用的辅助网站(持续更新)
    辅助驾驶功能开发-测试篇(2)-真值系统介绍
    【DL】关于tensor(张量)的介绍和理解
    【C#教程16/16】: 输入输出
    Linux的文本编辑器:vim
    文件名太长,批量改名不求人:轻松解决文件名问题
    927. 三等分 模拟
  • 原文地址:https://blog.csdn.net/QD_Jason/article/details/126064650