1、什么是函数
有了函数可以简化程序的调用。函数就是最基本的一种代码抽象的方式
2、调用函数
1)要调用一个函数,需要知道函数的名称和参数
2)绝对值函数abs()
例子:
如果传入的参数数量不对,会报
TypeError
的错误
3)比较函数 cmp(x, y)
如果 x<y, 返回 -1
如果x==y,返回 0
如果 x>y, 返回 1
例子:
>>>cmp(1,2)
-1
>>>cmp(2,1)
1
>>>cmp(2,2)
0
4) int()函数:把其他数据类型转换为整型
例子:
>>>int('123')
123
>>>int(12.34)
12
5)str()函数:把其他类型转换成 str 类型
例子:
>>>str('123')
123
>>>str(1.23)
'1.23'
6)sqrt()函数 :求平方根函数
>>>math.sqrt(2)
1.4142...
例子:
利用add(x,y,f)函数,计算:
解答:
7)add()函数
add(a1,a2,f(a1,a2))
就是逗号表达式,其值就是其中最后一个表达式,也就是f(a1,a2)的值.
例子:
add(x,y,f) 最后一个参数f=add(a,b)=f(x)+f(y)
8)map()函数
练习:
sum()函数接受一个list作为参数,并返回list所有元素之和。请计算 1*1 + 2*2 + 3*3 + ... + 100*100。
定义一个L=[] 空的list,使用L调用函数 append() 进行加数运算
3、
编写函数
定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号: 然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。
例子:
函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。
没有return语句,返回None。return None可以简写为return。
练习:
请定义一个 square_of_sum 函数,它接受一个list,返回list中每个元素平方的和。
4、返回多值
1)# math包提供了sin()和 cos()函数,我们可以import引用它
例子:
这里x,y 是将x=nx,y=ny nx的值赋给x,ny的值赋给y
2)Python的函数返回多值其实就是返回一个tuple。在语法上,返回一个tuple可以省略括号
练习:
一元二次方程的定义是:ax² + bx + c = 0。
请编写一个函数,返回一元二次方程的两个解。
例子:fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n
所以,fact(n)可以表示为 n * fact(n-1),只有n=1时需要特殊处理。
计算fact(5),可以根据函数定义计算如下:
2)优点
定义简单,逻辑清晰。
使用递归函数需要注意防止栈溢出
。
练习:汉诺塔的游戏
汉诺塔 (http://baike.baidu.com/view/191666.htm) 的移动也可以看做是递归函数。
我们对柱子编号为a, b, c,将所有圆盘从a移到c可以描述为:
如果a只有一个圆盘,可以直接移动到c;
如果a有N个圆盘,可以看成a有1个圆盘(底盘) + (N-1)个圆盘,首先需要把 (N-1) 个圆盘移动到 b,然后,将 a的最后一个圆盘移动到c,再将b的(N-1)个圆盘移动到c。
请编写一个函数,给定输入 n, a, b, c,打印出移动的步骤:
move(n, a, b, c)
例如,输入 move(2, 'A', 'B', 'C'),打印出:
A --> B
A --> C
B --> C
解答:
函数 mo
ve(n, a, b, c) 的定义是将 n 个圆盘从 a 借助 b 移动到 c。
输出:........................