资源简介 (共25张PPT)第2单元 编程计算第1单元 初识数据与计算第3单元 认识数据第4单元 计算与问题解决第5单元 数据分析与人工智能信息技术(必修1)2.4 可以复用的代码学习目标了解函数的作用。学会函数的定义和调用方法,并能熟练使用函数解决问题。学会发布共享代码的常见方法,并能熟练使用模块解决问题。123当我们面对一些复杂问题时,可以采取 “自顶向下、逐步细化 ” 的方法,即将一个完整的问题分成若干个小问题, 每个小问题实现一个功能, 再将每个小问题逐步细化、分解为一系列具体可实现的步骤。本节我们将围绕 “解决火柴棒摆数字问题” 项目展开学习, 通过该项目活动,体验复用和共享代码为编程带来的便利。活动1 用自定义函数实现火柴棒摆数字问题有6根火柴棒, 列出所有能摆出的自然数, 要求火柴棒正好用完。思考,利用6根火柴棒能够列出的最大数字是多少呢?如何计算一个数需要多少根火柴棒呢?数字 0 1 2 3 4 5 6 7 8 9需要的火柴棒 6 2 5 5 4 5 6 3 7 61.列出5个用6根火柴棒摆出的数字,分别是0 , 6 , 9 , 14 , 77 , 1112.要摆出数字103需要多少根火柴棒?怎么计算?可以将这个数的每个数位上的数字所需要的火柴棒数加起来。算法分析1.数字“1”需要的火柴棒最少,所以能摆出的自然数最大是1112.计算0和111之间的所有数字,统计需要的火柴棒3.只要是恰好需要6根火柴棒的直接输出。算法流程图描述如何让计算机找出这个数字中的所有个位数呢?想一想,如果我们想得到“125”的个位上的“5”,哪种运算可以实现?除、整除还是取模?125%10=5我们定义一个变量digit来接受取模运算的结果,用tens来接受整除的结果;digit1 = 125%10 tens1=125//10Digit2 = tens1%10 tens2=tens1//10如何设计算法,让计算机找出这个数字中的所有个位数呢?实现方法:1.将这个数除以10求余(取模),求得个位数;2.将这个数除以10取整数3.重复第1和第2步骤,直到这个数为0算法的流程图描述及代码实现list = [6,2,5,5,4,5,6,3,7,6]num = int(input(“请输入0-111之间的任意数字”))while(num>0):i = num%10s = s + list[i]num = num//10数字 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]s = 0while (num>0):i = num%10s = s+list[i]num = num//10print(s)代码实现sum = 6i = 0while(i<=111):if(Match_num(i)==sum):print(i)i = i + 1else:i=i+1……print()input()range()我们已经学习了哪些函数?类 别 函 数 举 例系统函数 数学运算符类 **数据转换类 int()字符串操作类 len()输入输出类 print() input()文件操作类 open()自定义函数函数用户自定义函数函数库中的标准函数,是Python提供给用户的一系列已经编好的程序。如:print()输出函数input()输入函数用户根据需要编写的一段程序系统函数定义函数的基本格式:def 函数名(参数):#函数说明语句或语句组return 返回值函数一般包括函数名、参数、返回值和函数体等四部分。其中,函数名和函数体是必不可少的,参数和返回值可根据需要进行定义。函数的调用:指函数定义以后,在代码的其他地方使用函数的动作函数的调用形式是函数名+参数参数是用来向函数传递值的,当有多个参数时,各个参数之间用逗号开。函数执行完后,由return语句将表达式值返回给调用者,结束函数我们来看一个简单的例子,这个函数用来求n!。def factorial(n): #函数名为factorial,有一个参数为ns=1for i in range(2,n+1):s=s*Ireturn 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 setupsetup(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=6print(“你可以拼出这些数字:")for i in range(112):if mymodule.match_num()==sum:print(i)巩固提升def shengxiao(year):animal=[“鼠”,”牛” ,”虎” ,”兔” ,”龙” ,”蛇” ,”马” ,”羊” ,”猴” ,”鸡” ,”狗” ,”猪”]index=(myyear-1972)%12return indexmyyear = int(input(“请输入你的出生年份”))while myyear!=0:print(shengxiao(myyear))课堂小结 展开更多...... 收起↑ 资源预览