《Python语言程序设计》 —3.7 课后习题

举报
华章计算机 发表于 2019/11/18 21:17:39 2019/11/18
【摘要】 本节书摘来自华章计算机《Python语言程序设计》一书中第3章,第3.7节,作者是王恺 王志 李涛 朱洪文。

3.7 课后习题

1.   在Python语言中,使用函数分为两个步骤:定义函数和     。  

2.   在Python语言中,函数定义需要使用     关键字。

3.        是在定义函数时函数名后面的一对小括号中给出的参数列表。

4.        是在调用函数时函数名后面的一对小括号中给出的参数列表。

5.   能够将一个函数的运算结果返回到调用函数的位置,以便可以继续用该运算结果参与其他运算,此时则应使用     语句。

6.   使用     将整个模块导入,也可以使用     将模块中的标识符直接导入当前环境。

7.   可以使用“from模块名import     ”的方式导入一个模块中的所有标识符。

8.   定义一个包,就是创建一个文件夹并在该文件夹下创建一个     文件,文件夹的名字就是包名。

9.        是指在运行时动态替换已有的代码,而不需要修改原始代码。

10. 下列说法中错误的是(  )。

A. 当调用函数时,如果没有为某些形参传递对应的实参,则这些形参会自动使用默认参数值

B. 在使用关键字参数调用函数时,实参的传递顺序必须与形参列表中形参的顺序一致

C. 当普通实参传递给形参后,如果在函数体中对形参值做修改,则该修改并不会影响实参,即实参值不会改变

D. 如果实参是列表等对象,那么可在函数体中通过形参修改实参列表中对应元素的值

11. 下列关于拆分参数列表的说法正确的是(  )。

A. 列表、元组拆分出来的结果作为位置参数,字典拆分出来的结果作为关键字参数

B. 列表、元组和字典拆分出来的结果都作为关键字参数

C. 列表、元组和字典拆分出来的结果都作为位置参数

D. 列表、元组拆分出来的结果作为关键字参数,而字典拆分出来的结果作为位置参数

12. 写出下面程序段的输出结果。

def ModifyVal(x,y):

    z=x

    x=y

    y=z

def ModifyListElement(ls,idx,val):

    ls[idx]=val

a,b=3,5

print(a,b)

ModifyVal(a,b)

print(a,b)

c=[7,8,9]

print(c)

ModifyListElement(c,1,6)

print(c)

13. 写出下面程序段的输出结果。

def CircleInfo(radius, color='red'):

    print('半径:%d,颜色:%s'%(radius,color))

CircleInfo(10)

CircleInfo(20, color='green')

CircleInfo(color='blue', radius=30)

14. 函数Sum的功能是求参数的和并返回,参数个数不限。请将程序填写完整。

def Sum(*args):

    s=0

    for i in      :

        s+=i

    return     

print(Sum(1,2,3,4,5))

15. 已知模块文件arithmetic.py的内容如下:

def plus(x,y):

    return x+y

def multi(x,y):

    return x*y

编写程序,将模块导入,调用其中的函数,请将程序填写完整。

使用import导入:

import arithmetic

print(     (3,5))

print(     (5,6))

使用from import依次导入函数:

     

print(plus(3,5))

print(multi(5,6))

使用from import导入所有标识符:

from arithmetic import *

print(     (3,5))

print(     (5,6))

16. 按照作用域的不同,Python中的变量可以分为局部变量和     。

17. 在一个函数中使用     关键字,可以声明在该函数中使用的是全局变量,而非局部变量。

18. 通过     关键字,可以使内层的函数直接使用外层函数中定义的变量。

19.      函数是指在一个函数内部通过调用自己来求解一个问题。

20.      函数也称为匿名函数,是一种不使用def定义函数的形式,其作用是能快速定义一个简短的函数。

21. lambda函数的函数体只是一个     ,所以lambda函数通常只能实现比较简单的功能。

22. 如果内层函数使用了外层函数中定义的局部变量,并且外层函数的返回值是内层函数的引用,就构成了     。

23. 下列说法中错误的是(  )。

A. 在一个函数中定义的变量就是局部变量

B. 局部变量的作用域是从定义位置到函数结束位置

C. 在所有函数外定义的变量就是全局变量

D. 全局变量的作用域是从定义位置到程序结束位置

24. 下列关于装饰器的说法错误的是(  )。

A. 利用装饰器,可以在不修改已有函数的情况下向已有函数中注入代码,使其具备新的功能

B. 一个装饰器可以为多个函数注入代码,一个函数也可以注入多个装饰器的代码

C. 一个装饰器可以为多个函数注入代码,而一个函数只能注入一个装饰器的代码

D. 装饰器实际上就是一种闭包

25. 写出下面程序的输出结果。

def outer():

    x=100

    global y

    y=200

    def inner():

        nonlocal x

        x=1000

        y=2000

        print('inner函数中的x,y值为',x,y)

    inner()

    print('outer函数中的x,y值为',x,y)

x=10

y=20

outer()

print("执行outer,inner函数之后x,y值为",x,y)

26. 写出下面闭包程序的输出结果。

def f(x):

    y = 100

    def inner(z):

        return x * y + z

    return inner

a10 = f(10)

a20 = f(20)

print(a10(29))

print(a20(29))

27. 已知高阶函数的程序如下:

def FunAdd(f,x):

    return f(x)

def area(r):

    return 3.14*r*r

def perimeter(r):

    return 2*3.14*r

print(FunAdd(area,5))

print(FunAdd(perimeter,5))

请将其中的area函数和perimeter函数改写为lambda函数。请将改写后的程序填写完整。

def FunAdd(f,x):

    return f(x)

print(FunAdd(     ,5))

print(FunAdd(     ,5))

28. 请编写递归函数fib(n),实现求斐波那契数列第n项的值。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。