15 初见函数

函数是可以反复用的代码片断

大纲

  • 什么是函数

  • 练习:鸡兔同笼

  • 练习:找到质数

  • 练习:最大公约数

什么是函数

有些问题的程序太长或太复杂,写起来会比较困难,如果我们将一个复杂的问题分解成多个较小的问题,就会比较容易解决一些。这些处理较小问题的代码块就叫做函数,它也可以用于其它场景的重复使用。

在第3小节里面,我们编写了计算圆面积的代码,这几行代码对于我们计算面积很有用处,如果我们想反复利用这段代码的话,可以将它打个包,变成一个函数,听起来很复杂,其实很简单。

def circle_area(r):
    pi = 3.14
    area = pi * r**2
    return area
circle_area(1.5)
7.065
circle_area(2.5)
19.625

这个函数在使用起来和print、type那些命令一样,首先是写之前定义好的函数名字,再是括号和输入,函数在处理后就会输出面积。写函数的好处就是可以反复利用某一段代码。

关于写函数我们要注意几个地方

  1. 定义函数需要用到def这个三个字母特定的关键词作为开头,表示后面的代码是在写一个函数

  2. def后面跟着函数名,函数名是自己定义的,上例中就是circle_area

  3. 函数名后面跟一个括号,括号里是输入的变量,也就是未来在使用这个函数时的输入内容,这里的输入是半径

  4. 然后后面跟一个分号,表示函数具体的代码会在下一行开始了

  5. 分号后面具体的代码需要有一个缩进,就类似于中文写作文起一个段落一样,这种缩进一般是四个空格

  6. 最后的输出结果需要用return来特别指出

下面我们再来写一个函数,计算一个圆柱体的表面积,回忆一下圆柱体的表面积是由底面积和侧面积两部分构成,具体公式是:

2πr2+2πh2\pi r^2 + 2\pi h

上例中,先定义了函数名字,因为圆柱体的表面积由半径r和高h两个值决定,所以这里要有两个输入的变量,或者说两个输入参数,两个变量用逗号隔开。然后在第二行开始分别底面积和侧面积,area_a计算了底面积,这里底面积是一个圆,直接利用了circle_area这个我们已经写好的函数,然后area_b计算了侧面积,之后再求和,最后输出。当r为1.5,h为4的时候,我们计算出这个圆柱体的表面积是39.25

小结:函数可以让我们反复利用某一段代码,函数的特点是有输入,有计算处理,有输出,之前我们学到的print、type等其实也是函数。python还内置了很多有用的函数,如果不够的话,大家可以自己写一些函数,就像是算圆面积那样就可以了。

练习:鸡兔同笼

鸡兔同笼问题:已知鸡和兔的总数量为n,它们一起的腿的总数量为m,编写一个函数,以求出鸡有多少只,兔有多少只?

设鸡有x只,兔有y只,根据关系公式:

x+y=nx+y=n
2x+4y=m 2x+4y=m

联立解可得:

x=(4nm)/2x=(4n-m)/2
y=nxy = n-x

从功能上来看,这个函数已经完成了,不过输出显示看起来不是很人性化,我们利用前面学到的东西把输出修改一下。

或者使用字符串格式化来做输出的修改

练习:找到质数

我们在第9课的时候,学习过如何来找到质数

下面我们把它改造一下,将核心代码转换成一个函数。

函数可以用在很多场合,例如在列表解析中。

练习:数字判断

写一个函数,输入是n,返回在n以内所有可以被3或5整除的数字之和。

练习:最大公约数

函数可以有多个输入参数,让我们把之前学到的最大公约数的方法来写成一个函数。

Last updated