内容正文:
用计算机解决问题,通常是将一个复杂的大问题分解成一系列简单的小问题。当问题细化到足够简单时,问题的解决者就可以为每个小问题编写程序,并通过函数进行封装。的那个各个小问题都解决了,大问题也就迎刃而解。
那么什么是函数
第十二课 Python的函数
函数
函数一段是组织好的,具有特定功能、可重复使用的,用来实现单一或相关联功能的语句块。
它用函数名来表示,并通过函数名进行相应功能的调用。能提高应用的模块性,和代码的重复利用率。
系统内建函数
用户自定义函数
一、内建函数
又称内置函数,指Python解释器内置的函数,编写程序时可以直接调用。
思考:
我们用到过哪些内建函数?
Len()函数的应用
函数库
函数库:函数库是由系统建立的具有一定功能的函数的集合。位于函数库中的函数被称为库函数。
库函数无法直接调用,需要先用动态加载函数import加载,才能调用。常用格式为:
import <函数库名>
<函数库名>. <库函数名>
Math函数库
这是数学函数库,可以从中找到各种常用的数学函数,如:
math.pi 圆周率
math.ceil(x) 对x向上取整
math.floor(x) 对x向下取整
math.pow(x,y) x的y次方
math.sqrt(x) x的平方根
math.fsum(list1) 对集合内的元素求和
Random函数库
这是随机函数库,可以用其中的库函数生成随机数,如:
random .random() 生成一个【0,1.0)之间的随机浮点数
random . uniform(a,b) 生成一个a到b之间的随机浮点数
random . randint(a,b) 生成一个a到b之间的随机整数
random . choice(<list>) 从列表中随机返回一个元素
random . shuffle(<list>) 将列表中元素随机打乱
random . sample(<list>,k) 从指定列表中随机获取K个元素
用随机数进行猜数字游戏
num=66 #给定的具体数为66
i=0 #计数器置初值0
#循环猜数
while True:
guess=int(input(“请输入猜测数:”))
if guess<num:
print(“偏小”)
i=i+1
elif guess>num:
print(“偏大”)
i=i+1
else:
print(“正确,共猜测次数:”, i+1)
break
import random
num=random. randint(1,100) #随机生成一个1-100的数
i=0 #计数器置初值0
#循环猜数
while True:
guess=int(input("请输入猜测数:"))
if guess<num:
print("偏小")
i=i+1
elif guess>num:
print("偏大")
i=i+1
else:
print("正确,共猜测次数:", i+1)
break
二、自定义函数
由用户创建的函数称为自定义函数。
函数名
参数
函数体
自定义函数
创建自定义函数
Python中使用保留字def来定义一个函数。
Def <函数名> (|参数列表|):
<函数体>
|return<返回值>|
可以是任何有效的Python标示符
为函数体提供数据,可以有任意个,称为形式参数,简称“形参”
函数中进行一系列的逻辑计算
当函数执行完毕后,可以给调用者返回数据
调用自定义函数
自定义函数的调用和执行,格式如下:
<函数名> (|参数列表|)
给出要传入函数内部的数据,这类参数称为实际参数,简称“实参”
第一次调用,直接按形参的位置传入两个实参;
第二次调用,按形参关键字传入两个实参。
运行结果相同
三、函数应用实例
斐波那契数列问题:
假设默认买了一对小兔子,这对小兔子从第三个月开始,每个月都会生一对小兔子,而所有的小兔子到了第三个月又会是每月生一对小兔子。问:第n个月会有多少对兔子?
问题分析
斐波那契数列,又称黄金分割数列,兔子数量与时间的关系如下图:
时间(月) 1 2 3 4 5 6 7 ……
兔子数量(对) 1 1 2 3 5 8 13 ……
除第一、第二个月外,其他数据都可以通过前两个数据生成:
fib(1)=1, fib(2)=1
fib(3)= fib(1)+ fib(1)=2
fib(n)= fib(n-2)+ fib(n-1) (n>2)
…
算法设计
输入:月数n
初始:fib(1)=1, fib(2)=1,月份i=3
处理: fib(i)= fib(i-2)+fib(i-1)
输出:fib(i)
编写程序
#定义fib函数,n为形参
def fib(n):
a,b=1,1
for i in range(3,n+1)
a,b=b,a+b
return b
#输入月数
n=int(input(‘请输入第n个月:’))
#调用fib函数,i为实参
for i in range(1,n+1):
print(fib(i),end=‘ ’)
每出一个数据后面加一个空格
日积月累
赋值语句“a,b=b,a+b”的运行规则为:先计算赋值号右边的算式,再把计算结果依此赋给左边的变量。
这种写法也可以用来实现变量交换,例如a,b=b,a。
$$