2.4可以复用的代码 课件(共20张PPT)-2022—2023学年高中信息技术教科版(2019)必修1

资源下载
  1. 二一教育资源

2.4可以复用的代码 课件(共20张PPT)-2022—2023学年高中信息技术教科版(2019)必修1

资源简介

(共20张PPT)
python
可以复用的代码
2.4
项目导入
活动1 用自定义函数实现火柴棒摆数字问题
有6根火柴棒, 列出所有能摆出的自然数, 要求火柴棒正好用完。
思考,利用6根火柴棒能够列出的最大数字是多少呢?
6根
2根
5根
5根
4根
5根
6根
3根
7根
6根
穷举法(一个一个去判断)
~
火柴棒摆数字问题
算法分析
1.数字“1”需要的火柴棒最少,所以能摆出的自然数最大是111
2.计算0和111之间的所有数字,统计需要的火柴棒
3.只要是恰好需要6根火柴棒的直接输出。
算法流程图描述
如何计算?103需要几根?
把每个数位上的数字所需要的火柴棒数加起来。
火柴棒摆数字问题
将其转化成流程图画在图2.4.3中
火柴棒摆数字问题
如何让计算机找出这个数字中的所有个位数呢?
(1)想一想,如果我们想得到“103”的个位上的“3”,哪种运算可以实现?除、整除还是取模?
103%10=3
(2)想一想,如何得到“103”的十位上的“0”,哪种运算可以实现?除、整除还是取模?
(3)想一想,如何得到“103”的百位上的“1”,哪种运算可以实现?除、整除还是取模?
103//10=10
10//10=1
10%10=0
x = num % 10
num = num // 10
num = 103
x = num % 10
num = num // 10
x = num % 10
1%10=1
f = [6,2,5,5,4,5,6,3,7,6]
total = f[x]
total = total+f[x]
total = total+f[x]
火柴棒摆数字问题
实现方法:
1.将这个数除以10求余(取模),求得个位数;
2.将这个数除以10取整数
3.重复第1和第2步骤,直到这个数为0
编写代码:
num = int(input(“请输入0-111之间的任意数字”))
(x
x = num % 10
f = [6,2,5,5,4,5,6,3,7,6]
total = total+f[x]
num = num // 10
火柴棒摆数字问题
x=num%10
total=total+f[x]
输出total
f = [6,2,5,5,4,5,6,3,7,6]
if num==0:
total=f[0]
else:
total=0
while(num>0):
x = num%10
total = total + f[x]
num = num//10
print(total)
用自定义函数实现火柴棒摆数字问题
6
sum = 6
i = 0
while(i<=111):
if(Match_num(i)==sum):
print(i)
i = i + 1
else:
i=i+1
函数
用户自定义函数
函数库中的标准函数,是Python提供给用户的一系列已经编好的程序。如:
用户根据需要编写的一段程序
系统函数
把某个功能的代码封装到一个代码块中,用来为某个重复使用的功能做调用的一个代码块。
函数类型:
def 函数名(参数):
#函数说明
语句或语句组
return 返回值
参数是用来向函数传递值的,当有多个参数时,各个参数之间用逗号隔开。
函数执行完后,由return语句将表达式值返回给调用者,结束函数
例如:def 函数名(参数1,参数2……):
定义函数的基本格式:
函数定义与调用
函数的调用:指函数定义以后,在代码的其他地方使用函数的动作
函数的调用形式是函数名(参数)
这个函数用来求n!
在遇到函数的调用语旬factorial(4)时, 转到函数中的第一行代码开始执行。
函数运行时,变量n会被赋值为4。
函数执行完成返回变量s的值即24,
然后回到语句total = factorial(4),
将返回值赋给变量 total, 最后输出。
巩固练习
下列代码的输出结果是 ?
def sum(a,b):
c=a+b
return c
print(sum(4,5))
9
用自定义函数实现火柴棒摆数字问题
def Match_num(num):
f = [6,2,5,5,4,5,6,3,7,6]
if num==0:
total=f[0]
else:
total=0
while(num>0):
x = num%10
total = total + f[x]
num = num//10
return total
6
sum = 6
i = 0
while(i<=111):
if(Match_num(i)==sum):
print(i)
i=i+1
else:
i=i+1





发布代码
任务二 发布共享代码实现火柴棒摆数字问题
首先做好发布前的准备工作。在D:\创建一个文件夹mymodule, 其中包含mymodule.py和setup.py两个文件。
mymodule.py是一个模块文件, 其内容就是match_num函数。setup.py文件包含有关发布的元数据。
请将 “计算一个数字需要多少 根火柴棒" 的函数match_num转换为模块 , 然后发布。
def Match_num(num):
f = [6,2,5,5,4,5,6,3,7,6]
if num==0:
total=f[0]
else:
total=0
while(num>0):
x = num%10
total = total + f[x]
num = num//10
return total
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所示的文件。
将发布安装在你的python的本地副本中
导入并使用模块
导入语句 import mymodule
调用模块内的函数时用 mymodule.match_num(参数) 来实现。
发布代码操作
习题讲解
已知图中各边长,求多边形的面积
math模块中定义了sqrt(求平方根)函数
巩固提升
def shengxiao(year):
animal=[“鼠”,”牛” ,”虎” ,”兔” ,”龙” ,”蛇” ,”马” ,”羊” ,”猴” ,”鸡” ,”狗” ,”猪”]
index=(myyear-1972)%12
return index
myyear = int(input(“请输入你的出生年份”))
while myyear!=0:
print(shengxiao(myyear))
请编写程序,实现输入一个人的出生年份(>=1900),输出他的生肖
小结
python
THANK
YOU

展开更多......

收起↑

资源预览