学习目标
★了解函数的作用。
★学会函数的定义和调用方法,并能熟练使用函数解决问题。
★学会发布共享代码的常见方法,并能熟练使用模块解决问题。
本课要点
任务一 用自定义函数实现火柴摆数字问题
活动1 用流程图表述问题解决的思路
有6根火柴棒,列出所有能摆出的自然数,要求火柴棒正好用完。
要找出这些数,可以从0到111依次判断这些数是不是恰巧需要6根火柴棒。为什么是0到111呢?观察上图可知,在0~9这十个数字中,摆出“1”只需要2根火柴棒,是需要火柴棒数最少的数字。因此6根火柴棒能摆放的最大数就是111。将自己的想法用流程图表示出来。
如何计算一个数需要多少根火柴棒呢?可以将这个数的每个数位上的数字所需要的火柴棒数加起来。实现方法是将这个数除以10取余,求得个位数;然后将这个个位数需要的火柴棒数累加;接着将这个数除以10取整,去掉个位数;重复以上步骤直到这个数为0。
活动2 完善程序实现问题解决
如果遇到一个需求多次出现,可以先思考,有没有内置函数提供帮助。如果没有,则可以考虑寻找或自己编写一个自定义函数。“一个数字需要多少根火柴棒”的问题可以通过函数计算来实现。
一、函数
函数可分为系统函数和用户自定义函数两种类型。
系统函数即函数库中的标准函数,是程序设计语言或操作系统提供给用户的一系列已经编制好的程序。在前面单元使用过的print()和input()函数都是系统函数。前者用于将字符串按指定格式输出到屏幕上;后者用于接收键盘的输入,并存储于相应变量中。
常见的系统函数有以下几种:
●数学运算类函数
●数据转换类函数
●字符串操作类函数
●输人输出函数
●文件操作类函数
●其他类函数
用户自定义函数则是用户自己编写的一段程序。函数一般包括函数名、参数、返回值和函数体等四部分。其中,函数名和函数体是必不可少的,参数和返回值可根据需要进行定义。定义函数的基本格式如下。
参数是用来向函数传递值的,当有多个参数时,各个参数之间用逗号分隔开。函数执行完成后,由return语句将表达式值返回给调用者,结束函数。函数的调用采用函数名(参数)的方式。
用自定义函数求n!
def factorial(n):
#求n!
s=1
for i in range(2,n+1):
s=s*i
return s
#调用factorial函数
total=factorial(4)
print(total)
列出所有能摆出的自然数。
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#返回需要多少根火柴棒数
#以下为主程序
snum=6 # 6根火柴棒
print("你可以拼出这些数字:")
for i in range(112):
if match_num(i)==snum: #如果i需要的火柴棒数等于现有火柴棒数
print (i)
任务二 发布共享代码实现火柴棒摆数字问题

活动1 发布共享代码
任何人编写的代码都有可能帮到其他人,那么如何共享这些有价值的成果呢?常见的方法是发布代码。请将“计算一个数字需要多少根火柴棒”的函数match_num转换为模块,然后发布。
二、发布代码
在D盘创建一个名为mymodule的文件夹
在该文件夹内拷入两个文件:mymodule.py和setup.py
构建发布文件
安装到本地
三、导入模块并使用
import mymodule #导入模块
snum=6 # 6根火柴棒
print("你可以拼出这些数字:")
for i in range(112):
if mymodule.match_num(i)==snum: #调用模块内match_num()函数
print (i)
四、拓展练习
实现输入一个人的出生年份(>=1900),输出他的生肖,直到输入0结束。
def shengxiao(year):
#求生肖
zodiac=["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
index=(year-1972)%12
return zodiac[index]
#以下为主程序
myyear=int(input("请输入出生年份,输入0结束:"))
while myyear!=0:
print("你的生肖是:",shengxiao(myyear))
myyear=int(input("请输入出生年份,输入0结束:"))
求1!+2!+3!+……+10!的结果,要求用函数实现阶乘的计算。
def factorial(n):
#求n!
s=1
for i in range(2,n+1):
s=s*i
return s
#调用factorial函数
total=0
for i in range(1,11):
total=total+factorial(i)
print(total)

备课素材包
链接:
https://pan.baidu.com/s/1G2PWUojD5k6i1RqZREDvNA
提取码:vewh
往期精彩链接:
【视频讲解】山东省信息技术通用技术学业水平考试模拟试题讲解合集
【在线答题】山东省高中信息技术学业水平考试模拟试题1-10套
【试题文本】2020年高中学考信息技术15套和通用技术12套合集
高中信息技术【必修1】2.1计算机解决问题的过程
高中信息技术【必修1】2.2做出判断的分支
高中信息技术【必修1】2.3周而复始的循环
高中信息技术【必修1】3.2数据与结构
高中信息技术【必修1】3.1数据编码
高中信息技术【必修1】3.3数据与系统
高中信息技术【必修1】3.4加密与解密
高中信息技术【必修1】4.1算法及其特征
高中信息技术【必修1】4.2数值计算
高中信息技术【必修1】4.3非数值计算
高中信息技术【必修1】4.4综合问题的解决
高中信息技术【必修1】5.1走近数据分析
高中信息技术【必修1】5.2探秘人工智能
免责声明:本文转载于李雪梅名师工作室微信号,整理转发旨在传播优质信息资源,如涉及版权等问题,我们将立即更正或删除相关内容。