Python基础入门(十八)-函数

来源:互联网 发布:蜡笔小新 画风 知乎 编辑:程序博客网 时间:2024/06/11 03:52
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。  

请编写一个函数,返回一元二次方程的两个解

   

5、递归函数

      1) fact(n)递归函数

        例子: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

解答:
函数 move(n, a, b, c) 的定义是将 n 个圆盘从 a 借助 b 移动到 c。

输出:........................

1 0