(共20张PPT)
可以复用的代码
/函数/发布代码 / 导入模块并使用 /总结/
2.4
学习目标
03
02
01
学会发布共享代码的常见方法,并能熟练使用模块解决问题。
学会函数的定义和调用方法,并能熟练使用函数解决问题。
了解函数的作用。
当我们面对一些复杂问题时,可以采取 “自顶向下、逐步细化”的方法,即将一个完整的问题分成若干个小问题,每个小问题实现一个功能,再将每个小问题逐步细化、分解为一系列具体可实现的步骤。
本节我们将围绕解决“火柴棒摆数字问题”项目展开学习,通过该项目活动,体验复用和共享代码为编程带来的便利。
复杂的问题
子问题1
孙问题1
孙问题2
孙问题3
子问题2
孙问题1
孙问题2
孙问题3
子问题3
孙问题1
孙问题2
孙问题3
得出结论
任务一 用自定义函数实现摆数字问题
问题:有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。
思考:利用6根火柴棒能够列出的最大数字是多少呢?
如何计算一个数需要多少根火柴棒呢?
数字 0 1 2 3 4 5 6 7 8 9
需要的火柴棒 6 2 5 5 4 5 6 3 7 6
1..列出几个用6根火柴棒摆出的数字,分别是:
0 , 6 , 9 , 14 , 41 , 77 , 111
2.利用6根火柴棒能够列出的最大数字是多少呢?
数字“1”需要的火柴棒最少,所以能够摆出的自然数最大是111。
3.要摆出数字510需要多少根火柴棒?怎么计算?
将这个数的每个数位上的数字所需要的火柴棒数加起来。
算法分析
1.数字“1”需要的火柴棒最少,所以能够摆出的自然数最大是111。
2.计算0和111之间的所有数字,统计需要的火柴棒。
3.将恰好需要6根火柴棒的直接输出。
如何让计算机找出数字所有数位上的数字呢?
如果我们要得到 “206”个位上的“6”,哪种运算可以实现?除法、整除还是取模?
我们定义一个变量n来接受取模运算的结果,用t来接受整除的结果:
n 1= 206 % 10 t 1 = 206 // 10
n 2= t 1 % 10 t 2 = t 1 // 10
206 % 10 =6
如何让计算机找出数字所有数位上的数字呢?
1.将这个数除以10求余,求得个位数;
2.将这个数除以十取整;
3.重复以上两步,直到这个数为0。
实现方法:
算法的流程图描述及实现(函数设计)
数字 0 1 2 3 4 5 6 7 8 9
需要的火柴棒 6 2 5 5 4 5 6 3 7 6
def Match_num(num):
list = [6,2,5,5,4,5,6,3,7,6] # 0-9的数字分别需要多少根小棒
s = 0
num = int(input(“请输入0-111之间的任意一个数“))
if num == 0: # 火柴棒总数变量赋初值
s = list[0]
else:
s =0 # 火柴棒总数变量赋初值
while (num>0):
x=num % 10 # 取num除以10的余数,即num的个位数
s=s + list[x] # 所需火柴棒数累加
num=num//10 #num整除10,即去掉num的个位
print( s )
自定义函数
Match_num(num)
List=[6,2,5,5,4,5,6,3,7,6]
S=0
num>0
i=num % 10
s=s+list[i]
num=num//10
输出s
结束
否
是
num==0
S=list[0]
是
否
代码实现
开始
sum=6
i=0
i<111
Match_num(i)==sum
输出i
i = i+1
结束
否
否
是
是
sum=6
i =0
while(i<=111) :
if (Match_ num(i)==sum) :
print(i)
i=i+1
else:
i=i+1
函数
函数可分为系统函数和用户自定义函数两种类型。系统函数即函数库中的标准函数。
在前面单元使用过的print()和input()函数都是系统函数。
自定义函数基本格式:
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)
任务二 发布共享代码实现火柴棒摆数字问题
将“计算一个数需要多少根火柴棒”的函数match num转换为模块,然后发布。
首先做好发布前的准备工作:
在D:\创建一个文件夹mymodule,其中包含mymodule.py和setup.py两个文件。
mymodule.py是一个模块 文件:其内容就是match_ num函数。
代码发布——函数Match_ num代码
代码发布——Setup.py文件包含有关发布的元数据
代码发布——实现
然后打开mymodule所在的目录,构建发布文件。最后将发布文件安装到你的Python本地副本中。安装完成后,mymodule文件夹包含了如图2.4.4所示的文件。如果你想让全世界都分享你的成果,你可以在互联网上发布你的代码。
导入模块并使用
已经构建发布的模块必须先导人程序才能使用。
导人时使用语句 “import mymodule”, 调用模块内的函数时用“ mymodule.match_num( )”来实现。
完善下列程序,导入安装发布好的模块mymodule,实现火柴棒摆数字问题:
mymodule
mymodule.match_num(i)
课后练习——巩固提升
课堂小结
时代是思想之母,实践是理论之源。