(共13张PPT)
可以复用的代码
第二课时
第 2 单元
2.4
学习目标
★了解函数的作用。
★学会函数的定义和调用方法,并能熟练使用函数解决问题。 ★学会发布共享代码的常见方法,并能熟练使用模块解决问题。
函数
函数可分为系统函数和用户自定义函数两种类型。 系统函数即函数库中的标准函数。
我们在之前的学习中用到的input()、print()等函数都是系统函数。
函数一般包括函数名、参数、返回值和函数体等四个部分。自定义函数的基本格式如下:
def 函数名(参数):
语句或语句组(函数体)
return 返回值
常见的系统函数有以下几种:
数学运算类函数;
数据转换类函数;
字符串操作类函数;
输入输出函数;
文件操作类函数;
其他类函数。
自定义函数
def 函数名(参数):
语句或语句组(函数体)
return 返回值
参数是用来向函数传递值的, 当有多个参数时, 各个参数之间用逗号分隔开。
函数执行完成后,由return语旬将表达式值返回给调用者, 结束函数。 函数的调用采用函数名(参数)的方式。
我们来看一个简单的例子,这个函数用来求n!。
def factorial(n): #函数名为factorial,有一个参数为n
s=1
for i in range(2,n+1):
s=s*I
return s #函数的返回值为s
#调用factorial函数
total=–factorial(4)
print(total)
函数调用
函数的调用采用函数名(参数)的方式。如上例中,total=factorial(4);程序执行时由于def不是主程序的一部分,因此会跳过该段代码,从主程序的第一行total=favtorial(4)开始运行。
在遇到函数的调用语旬factorial(4)时, 转到函数中的第一行代码开始执行。 函数运行时, 变最n会被赋值为4。函数执行完成返回变量s的值即24, 然后回到语旬total = factorial(4), 将返回值赋给变量 total, 最后输出。
任务二 发布共享代码实现火柴棒摆数字问题
首先做好发布前的准备工作。在D:\创建一个文件夹mymodule, 其中包含mymodule.py和setup.py两个文件。
mymodule.py是一个模块文件, 其内容就是match_num函数。
请将 “计算一个数字需要多少 根火柴棒" 的函数match_num转换为模块 , 然后发布。
函数match_num代码
Def match_num(num):
f = [6,2,5,5,4,5,6,3,7,6] #0~9分别需要多少根火柴棒
if num==0:
total=f[0]
else:
total=0 #将火柴棒总数初始化
while(num>0):
x = num%10 #取num除以10的余数,即num的个位
total = total + f[x] #所需火柴棒数累积
num = num//10 #num整除10,即去掉num的个位
return total #反悔需要多少根火柴棒数
setup.py文件包含有关发布的元数据,代码如下。
from distutils.core import setup
setup(
name='mymodule’, #参数一定要与mymodule.py文件名相同
version='l.0.0’, #版本号
#参数一定要与mymodule.py文件名相同
py_modules=['mymodule’],
author='yd’, #作者
author_email='yd@’ , #作者邮箱
#代码功能描述
description='计算一个数字需要多少根火柴棒',
)
代码实现
然后打开mymodule所在的目录,构建发布文件。 最后将发布文 件安装到你的Python本地副本中。 安装完成后, mymodule文件夹包含了如图2.4.4所示的文件。 如果你想让全世界都分享你的成果, 你可以在互联网上发布你的代码。
导入模块并使用
已经构建发布的模块必须先导入程序才能使用。
导入时使用语旬 “import mymodule” ,调用模块内的函数时用 “mymodule.match_num()" 来实现。
完善下列程序,导入安装发布好的模块mymodule,实现火柴棒摆 数字问题。
import mymodule #导入模块
snum=6
print(“你可以拼出这些数字:")
for i in range(112):
if mymodule.match_num()==sum:
print(i)
巩固提升
def shengxiao(year):
animal=[“鼠”,”牛” ,”虎” ,”兔” ,”龙” ,”蛇” ,”马” ,”羊” ,”猴” ,”鸡” ,”狗” ,”猪”]
index=(myyear-1972)%12
return index
myyear = int(input(“请输入你的出生年份”))
while myyear!=0:
print(shengxiao(myyear))
课堂小结