zoukankan      html  css  js  c++  java
  • 函数和代码复用 --Python

    1、关于递归函数的描述,以下选项中正确的是

    A.包含一个循环结构
    B.函数比较复杂
    C.函数内部包含对本函数的再次调用
    D.函数名称作为返回值

    答案:D
    答案解析:递归函数是指函数内部包含对本函数的再次调用。

    2、关于递归函数基例的说明,以下选项中错误的是

    A.递归函数必须有基例
    B.递归函数的基例不再进行递归
    C.每个递归函数都只能有一个基例
    D.递归函数的基例决定递归的深度

    答案:C
    答案解析:每个递归函数至少存在一个基例

    3、以下选项中,不属于函数的作用的是

    A.提高代码执行速度
    B.复用代码
    C.增强代码可读性
    D.降低编程复杂度

    答案:C
    答案解析:函数的作用是复用代码、增强代码可读性、降低编程复杂度,而并不能提高代码的执行速度。

    4、假设函数中不包括global保留字,对于改变参数值的方法,以下选项中错误的是

    A.参数是列表类型时,改变原参数的值
    B.参数是整数类型时,不改变原参数的值
    C.参数是组合类型(可变对象)时,改变原参数的值
    D.参数的值是否改变与函数中对象的操作有关,与参数类型无关

    答案:D
    答案解析:python里有可变对象和不可变对象之分。只有传入的是不可变对象时,值才不发生改变,若是可变对象,值的传入需要注意。不可变对象:Number ,String ,Tuple,bool。可变对象: List , Set , Dictionary是可以改变内部的元素 。

    5、在python中,关于函数的描述,以下选项中正确的是

    A. 一个函数中只允许有一条return语句
    B. Python中,def和return是函数必须使用的保留字
    C. Python函数定义中没有对参数指定类型,这说明,参数在函数中可以当作任意类型使用
    D. 函数eval()可以用于数值表达式求值,例如eval(‘2*3+1’)

    答案:D
    答案解析:函数可以不使用return语句或多条return语句,因此A,B不正确;Python函数定义中没有对参数指定类型,函数中应根据实参的类型使用,C不正确。

    6、给出如下代码
    def func(a,b):
        c = a **2 + b
        b =a
        return c
    a =10
    b =100
    c = func(a,b)+a
    

    以下选项中描述错误的是
    A. 执行该函数后,变量c的值为200
    B. 该函数名称为func
    C.执行该函数后,变量b的值为100
    D.执行该函数后,变量a的值为10

    答案:A
    答案解析:执行该函数后,变量c的值为210

    7、在Python中,关于全局变量和局部变量,以下选项中描述不正确的是

    A.一个程序中的变量包含两类:全局变量和局部变量
    B.全局变量一般没有缩进
    C.全局变量在程序执行的全过程有效
    D.全局变量不能和局部变量重名

    答案:D
    答案解析:全局变量可以和局部变量重名,全局变量指的是在函数之外定义的变量,在程序执行全过程有效。全局变量在函数内部使用时,需要提前使用保留字global声明。局部变量指在函数内部定义的变量,仅在函数内部有效,当函数退出时,变量将不再存在。例如:

    n =2
    def multiply(x, y =10):
        n =x*y     #局部变量n,和第一行代码n不同。
        return n   #返回的n也是局部变量n
    s =multiply(99,2)
    print(s)
    print(n)
    

    全局变量可以和局部变量重名,因此D错误

    8、关于面向对象和面向过程编程描述,以下选项中正确的是

    A. 面向对象编程比面向过程编程更为高级
    B. 面向对象和面向过程是编程语言的分类依据
    C.模块化设计就是面向对象的设计
    D.所有面向对象编程能实现的功能采用面向过程同样能完成

    答案:D
    答案解析:面向对象编程能实现的功能均可以采用面向过程同样能完成

    9、以下选项中,对于递归程序的描述错误的是

    A. 书写简单
    B. 执行效率高
    C.一定要有基例
    D.递归程序都可以有非递归编写方法

    答案:B
    答案解析:递归程序的执行效率比较低

    10、下面代码的输出结果是
     f = lambda x,y:y+x
     f(10,10)
    

    A. 10
    B. 20
    C.10,10
    D.100

    答案:B
    答案解析:lambda表达式相当于:

    def fun(x, y):
        return x + y
    print(fun(10, 10))
    
    11、关于形参和实参的描述,以下选项中正确的是

    A.函数定义中参数列表里面的参数是实际参数,简称实参
    B.参数列表中给出要传入函数内部的参数,这类参数称为形式参数,简称形参
    C.程序在调用时,将实参复制给函数的形参
    D.程序在调用时,将形参复制给函数的实参

    答案:C
    答案解析:函数定义中参数列表里面的参数是形参,参数列表中给出要传入函数内部的参数,这类参数称为实参;程序在调用时,将实参复制给函数的形参

    12、关于lambda函数,以下选项中描述错误的是

    A. lambda函数也称为匿名函数
    B. lambda函数将函数名作为函数结果返回
    C.定义了一种特殊的函数
    D.lambda不是Python的保留字

    答案:D
    答案解析:lambda是Python的保留字

    13、以下选项中,对于函数的定义错误的是

    A. def vfunc(a, b = 2):
    B. def vfunc(a, b):
    C. def vfunc(a, b):
    D. def vfunc(
    a, b):

    答案:D
    答案解析:def vfunc(* a, b):中的*(可选参数)应该放在后面,因此D错误

    14、关于函数的参数,以下选项中描述错误的是

    A. 在定义函数时,如果有些参数存在默认值,可以在定义函数时直接为这些参数指定默认值
    B. 在定义函数时,可以设计可变数量参数,通过在参数前增加星号(*)实现
    C. 可选参数可以定义在非可选参数的前面
    D. 一个元组可以传递给带有星号的可变参数

    答案:D
    答案解析:可选参数不可以定义在非可选参数的前面

    15、关于return语句,以下选项中描述正确的是

    A.函数中最多只有一个return语句
    B.函数必须有一个return语句
    C.return只能返回一个值
    D.函数可以没有return语句

    答案:D
    答案解析:函数return的个数没有限制,可以没有return语句

    16、关于函数,以下选项中描述错误的是

    A.函数是一段具有特定功能的、可重用的语句组
    B.函数能完成特定的功能,对函数的使用不需要了解函数内部实现原理,只要了解函数的输入输出方式即可
    C.使用函数的主要目的是降低编程难度和代码重用
    D.Python使用del保留字定义一个函数

    答案:D
    答案解析:Python使用def保留字定义一个函数

    17、关于Python的全局变量和局部变量,以下选项中描述错误的是

    A.全局变量指在函数之外定义的变量,一般没有缩进,在程序执行全过程有效
    B.局部变量指在函数内部使用的变量,当函数退出时,变量依然存在,下次函数调用可以继续使用
    C.使用global保留字声明简单数据类型变量后,该变量作为全局变量使用
    D.简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放

    答案:D
    答案解析:局部变量指在函数内部定义的变量,仅在函数内部有效,当函数退出时,变量将不再存在。

    18、关于Python中的lambda函数,以下选项中描述错误的是

    A.lambda用于定义简单的、能够一行内表示的函数
    B.可以使用lambda函数定义列表的排序原则
    C.f = lambda x,y:x+y执行后,f的类型为数字类型
    D.lambda函数将函数名作为函数结果返回

    答案:D
    答案解析:C选项中,f的类型依参数来确定

    19、下面代码实现的功能描述为
    def fact(n):
        if n == 0:
            return 1
        else :
            return n * fact(n-1)
    num = eval(input('请输入一个整数:'))
    print(fact(abs(int(num))))
    

    A. 接受用户输入的整数N,输出N的阶乘值
    B. 接受用户输入的整数N,判断N是否是素数并输出结论
    C. 接受用户输入的整数N,判断N是否是整数并输出结论
    D. 接受用户输入的整数N,判断N是否是水仙花数
    答案:D
    答案解析:这是典型的递归函数,在return语句中调用函数本身。功能为输出N的阶乘值

    20、给出如下代码
    def fact(n):
        s = 1
        for i in range(1,n+1):
            s *= i
      return s
    

    以下选项中描述错误的是
    A.代码中n是可选参数
    B.fact(n)函数功能为求n的阶乘
    C.s是局部变量
    D.range()函数是Python内置函数

    答案:A
    答案解析:代码中n不是可选参数,可选参数有*或**

    21、给出如下代码
    ls = ['car','truck']
    def funC(a):
        ls.append(a)
        return
    funC('bus')
    print(ls)
    

    以下选项中描述错误的是
    A.ls.append(a)代码中的ls是全局变量
    B.执行代码输出结果为[‘car’,’truck’]
    C.ls.append(a)代码中的ls是列表类型变量
    D.funC(a)中a为非可选参数

    答案:B
    答案解析:执行代码输出结果为[‘car’,’truck’,'bus']

    22、给出如下代码
    ls = ['car','truck']
    def funC(a):
        ls = []
        ls.append(a)
        return
    funC('bus')
    print(ls)
    

    以下选项中描述错误的是
    A.代码函数定义中,ls.append(a)中的ls是局部变量
    B.执行代码输出的结果为['car', 'truck']
    C.ls.append(a)代码中的ls是列表类型
    D.执行代码输出结果为['car', 'truck', ’bus’]

    答案:D
    答案解析:funC函数内部的ls是局部变量,与全局变量不同,在函数调用结束后,局部变量就会消失。最终打印输出的ls是全局变量。

    23、给出如下代码
    import turtle
    def drawLine(draw):
        turtle.pendown() if draw else turtle.penup()
        turtle.fd(50)
        turtle.right(90)
    drawLine(True)
    drawLine(True)
    drawLine(True)
    drawLine(True)
    

    以下选项中描述错误的是
    A.运行代码,在Python Turtle Graphic中,绘制一个正方形
    B.代码def drawLine(draw)中的draw可取值True或者False
    C.代码drawLine(True)中True替换为-1,运行代码结果不变
    D.代码drawLine(True)中True替换为0,运行代码结果不变

    答案:D
    答案解析:if else简写形式例:

    a, b, c = 1, 2, 3
    if a > b:
        c = a
    else:
        c = b
    

    可简写为:

    a, b, c = 1, 2, 3
    c = a if a > b else b
    

    参数如果需要布尔值,而输入的是数值,那么只需要该数值为非0的数,对应为True,如果输入的数值为0,则代表False,因此D不正确

    24、给出如下代码
    import turtle
    def drawLine(draw):
        turtle.pendown() if draw else turtle.penup()
        turtle.fd(50)
        turtle.right(90)
    drawLine(True)
    drawLine(0)
    drawLine(True)
    drawLine(True)
    turtle.left(90)
    drawLine(0)
    drawLine(True)
    drawLine(True)
    

    以下选项中描述错误的是
    A.运行代码,在Python Turtle Graphic中,绘制一个数码管数字2
    B.代码drawLine(True)中True替换为0,运行代码结果不变
    C.代码drawLine(True)中True替换为-1,运行代码结果不变
    D.代码def drawLine(draw)中的draw可取值0、1、-1等
    答案:B
    答案解析:参数如果需要布尔值,而输入的是数值,那么只需要该数值为非0的数,对应为True,如果输入的数值为0,则代表False。

    25、下面代码的运行结果是
    def func(num):
        num += 1
    a = 10
    func(a)
    print(a)
    

    A.10
    B.11
    C.出错
    D.int

    答案:B
    答案解析:函数在传递参数时,指将实参复制给形参,并未对实参本身发生改变。

    26、下面代码的运行结果是
    def func(a, b):
        return a >> b
    s = func(5, 2)
    print(s)
    

    A.20
    B.6
    C.1
    D.12

    答案:C
    答案解析:a>>b代表将a转为二进制,然后向右移动b个位,(<<表示向左,>>表示向右)。a = 5,二进制为101;b =2,也就是将101向右移动2位,变为1。

    27、下面代码的运行结果
    def func(a, b):
        a *= b
        return a
    s = func(5, 2)
    print(s)
    

    A. 20 B. 10 C. 1 D. 12

    答案:B

    28、下面代码的运行结果是
    def f2(a):
        if a > 33:
            return True
    li = [11, 22, 33, 44, 55]
    res = filter(f2, li)
    print(list(res))
    

    A.[44,55]
    B.[33,44,55]
    C.[22,33,44]
    D.[11,33,55]

    答案:A
    答案解析:filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个列表,在本题中这个函数 f2 的作用是对每个元素进行判断是否大于33,如果大于则返回 True否则 False,filter()根据判断结果自动过滤掉不符合条件的元素,也就是将返回为True的元素组成的新list,因此本题选择A。注意,res是对象类型。

  • 相关阅读:
    HDU 6071
    HDU 6073
    HDU 2124 Repair the Wall(贪心)
    HDU 2037 今年暑假不AC(贪心)
    HDU 1257 最少拦截系统(贪心)
    HDU 1789 Doing Homework again(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 2216 Game III(BFS)
    HDU 1509 Windows Message Queue(队列)
    HDU 1081 To The Max(动态规划)
  • 原文地址:https://www.cnblogs.com/qikeyishu/p/10985771.html
Copyright © 2011-2022 走看看