您的位置:首页 > 编程语言 > Python开发

MOOC —— Python语言基础与应用 by 北京大学 第六章 计算和控制流(二)

2019-01-22 22:57 495 查看

第六章 计算和控制流(二)

29、计算和控制流:代码组织:函数(def)

了解一下封装:
容器是对数据 的封装
函数是对语句的封装
类是对方法和属性的封装

函数的用法,先定义,再调用

定义函数
def function(参数)
<缩进的代码段>
return <函数返回值>

调用函数
function(参数)
返回值赋值:v = function(参数)

变量的作用域
局部变量:函数内部有效
全局变量:整个代码段有效
global:声明全局变量,声明后可以对全局变量进行修改
如果没有定义局部变量,则使用外一层的变量

函数小技巧
map(func,list1,list2…)
lambda 有时函数只用一次,名称不重要,就用lambda

30、计算和控制流:代码组织:函数参数

形式参数:def f(a,b): a,b是形参
实际参数:调用f(c,d): c,d是实参

固定参数:固定了顺序和数量
def func(key1,key2,key3…):
调用时,就按位置顺序输入参数: func(a,b,c)
可变参数:
def func(*args): 输入多个参数被组装成一个元组
def func(**kwargs): 输入多个参数被组装成一个字典

如果调用的参数是关键字参数
func(key1=arg1,key2=arg2…),可以不按顺序输入参数
既有位置参数,又有关键字参数,传进参数时,位置参数必须在前,关键字参数必须在后

31、上机练习

一、创建一个函数,接受一个参数n(n>=100), 判断这个数是否为水仙花数
水仙花数:满足如果这个数为m位数,则每个位上的 数字的m次幂之和等于它本身
例如:1^3 + 5^3 + 3^3=153, 1^4 + 6^4 + 3^4 + 4^4=1634
结果返回True或者False

def sxh(x):
a = str(x)
s = 0
for i in range(len(a)):
s += eval(a[i])**len(a)
if s == x:
return True
else:
return False

二、创建一个函数,接受一个参数max(max >= 1000),调用上题编写的判断函数,求 100到max之间的水仙花数

def s(max):
s = []
for i in range(100, max + 1):
sxh(i)
if sxh(i) == True:
s.append(i)
print(s)

三、创建一个函数,接受两个字符串作为参数, 返回两个字符串字符集合的并集
例如:接受的两个字符串为"abc"和"bcd",返回 set([‘a’, ’b’, ’c’ , ’d’])

def f(a, b):
c = list(set(a) | set(b))
print(sorted(c))
32、计算和控制流:引用扩展模块

模块就是程序
每个扩展名为py的python程序都是一个独立的Module

组织模块
包package放在一个文件夹里的模块集合

引用方式
import module as 别名 调用时需要 别名.add()
from module import function 调用时直接用add()

下面介绍python的标准库,功能强大,实在是多。。这里给链接按需查找
英文版:https://docs.python.org/3/library/index.html
中文版:https://docs.pythontab.com/python/python3.5/stdlib.html#

扩展命名空间
表示标识符的可见范围
dir()
help()
先认识一下,,我是不怎么理解。。。

测验题

1.下列关于Python中函数的说法不正确的是()。

A.Python中定义函数的关键字是def。

B.函数内容以冒号起始,并且缩进。

C.结束函数时如果return语句不带表达式相当于无返回值。

D.在函数内部可以使用global来定义全局变量。

2.下列定义函数的方法,在Python中正确的是()。

A. class( arg1, arg2,…argN)

B. def ( arg1, arg2,…argN)

C. function (arg1,arg2,…argN)

D.def (arg1,arg2,…argN)

list(map(lambda x:len(x),['a','12','ab123']))

上述代码的输出结果是____。

A. [1, 0, 2]

B. [0, 2, 3]

C. [1, 2, 5]

D. [1, 2, 3]

f1=lambda x:x*2
f2=lambda x:x**2
print(f1(f2(2)))

上述代码的输出结果是____。

A. 4
B. 6
C. 2
D. 8

counter=1
num=0
def tset():
global counter
for i in (1,2,3):
counter+=1
num=10
tset()
print(counter,num)

上述代码的输出结果是____。

A. 4 0
B. 1 10
C. 4 10
D. 1 0

def Sum(a,b=3,c=5):
return sum([a,b,c])
print(Sum(8,2))

上述代码的输出结果是____。

7

d=lambda x:x*2
t=lambda x:x*3
a=2
a=d(a)
a=t(a)
a=d(a)
print(a)

上述代码的输出结果是____。

答案
1、C
2、D
3、C
4、D
5、A
6、15
7、24

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐