第6-7-8-9-10课 用算法高效寻找问题答案 课件(共81张PPT)

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

第6-7-8-9-10课 用算法高效寻找问题答案 课件(共81张PPT)

资源简介

(共81张PPT)
Python算法探究
——初中信息技术第二册第2单元
COMPUTATIONAL THINKING
01
第一节 生活中的算法
算法就是用一步接一步的方式来详细描述计算机如何将输入转化为所要求的输出的过程,或者说,算法是对计算机上执行的计算过程的具体描述。
01
第一节 生活中的算法
假设你计划要进行一次自驾游,从淄博到北京天安门,应该选择那一条路线呢?
01
第一节 生活中的算法
02
枚举算法(也称为穷举法)是我们在日常中使用到的最多的一个算法,它的核心思想就是:把所有可能的答案全部列出来,从中找最优答案。方法简单,但很实用。
第二节 枚举算法(也称为 穷举法)
02
第二节 枚举算法
02
第二节 枚举算法
02
第二节 枚举算法
02
第二节 枚举算法
02
第二节 枚举算法
n=100
for i in range(1,n+1):
if “7” in str(i): # 找出所有的明"7",即含7的数
print("找到明7数字:",i)
P54
02
第二节 枚举算法
n=100
for i in range(1,n+1):
if not "7" in str(i) and i%7==0:
print(“找到的数字为:”,i)
暗7实现代码
# 找出所有的暗“7”,即不含7的倍数
02
n=100
for i in range(1,n+1):
if “7” in str(i) or i%7==0:
print(“找到的拍手数字为:”,i)
第二节 枚举算法——实现“明7”和“暗7”的代码
02
第二节 枚举算法-百钱买百鸡
古人的智慧:百钱买百鸡
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中公鸡,母鸡,小鸡都必须要有,
问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?
33只
20只
02
第二节 枚举算法-百钱买百鸡
【解析】
本题使用三重循环实现题目要求,每一次对应的变量可以从程序里看出:
第1层循环控制公鸡数量,用x表示
第2层循环控制母鸡数量,用y表示
第3层循环控制小鸡数量,用z表示
每一层循环中的范围已经根据他们的价钱进行了处理,
比如每只公鸡5文钱最多能买20只,所以它的范围为(1,21)
条件判断中:
计算百钱的表达式为:5*x + 3*y + z//3 ==100
计算百只鸡的表达式为: x+y+z==100
两个表达式必须同时成立,所以需要使用and来连接
最后要注意输入格式的控制
02
第二节 枚举算法-百钱买百鸡
#变量x,y,z分别是公鸡、母鸡和小鸡的数量.
② and
③ 5*x + 3*y + z//3 ==100
for x in range(1,21):
for __①__ in range(1,34):
for z in range(3,101,3):
if x+y+z==100 __②__ __③__:
print("公鸡:",x,"母鸡:",y,"小鸡:", __④__)
① y
④ z
02
第二节 枚举算法
1000
"1" in str(x)
x%10==8
02
第二节 枚举算法-寻找水仙花数
02
第二节 枚举算法-寻找水仙花数
运算符 描述
% 取余函数 - 返回除法的余数
** 乘方
// 取整函数 – 返回除数的整数
02
第二节 枚举算法
运算符 逻辑表达式 描述
and x and y 布尔“与” – 表示x与y必须同时成立,程序才能正常往下运行。
or x or y 布尔“或” –表示只要x与y其中一个条件成立,程序就可以往下运行。
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
in 如果在指定的序列中找到值返回 True,否则返回 False
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。
02
第二节 枚举算法
第一节 生活中的算法
01
(预习P49—50 )
01
第一节 生活中的算法
03
第三节 迭代算法—用迭代法探究数据变化的规律
03
第三节 迭代算法
预习P60—61
3分钟
03
第三节 迭代算法
03
第三节 迭代算法
03
第三节 迭代算法
03
第三节 迭代算法
03
第三节 迭代算法
03
第三节 迭代算法
03
第三节 迭代算法—Python中数学函数的使用
棋盘上的麦粒
如何用python编程计算麦粒数呢?——前期知识预备
什么是模块?
逻辑上来说模块就是一组功能的组合;实质上一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的扩展名。
03
第三节 迭代算法—什么是模块?
03
第三节 迭代算法——模块的导入方法
03
第三节 迭代算法——模块的导入方法
From math import *
导入数学函数模块,之后可以直接使用里面的一些数学函数。
03
第三节 迭代算法——模块的导入方法
pow
/pa /
乘方函数
实例:
Pow(2,3)
23
电子表格也写做:2^3
即:

2**3
Pow(2,n)
2n
即:
03
第三节 迭代算法
阅读 P65—66页,结合运行《3.迭代法文件接收柜》内程序“迭代1.任意麦粒数.py”,理解程序代码。
运行程序时,开始输入较小点的数值。
3-5分钟
03
第三节 迭代算法
#print("总数简便计算的方法:",int(pow(2,k))-1)
03
第三节 迭代算法
a2/1000
<1000
a3
1.阅读 P66—67页试着理解程序代码,并填空。(不要写在书上)
2.打开《3.迭代法文件接收柜》内程序“迭代2.任意麦粒数质量.py”,填空,并运行代码。
03
第三节 迭代算法——总结
04
第四节 排序算法
04
第四节 排序算法
04
第四节 排序算法
split
/spl t/
分解
Split( )函数,可以根据指定的分隔符把一个字符串拆分成一个列表。
04
第四节 排序算法
04
第四节 排序算法
split
/spl t/
分解
Split( )函数,可以根据指定的分隔符把一个字符串拆分成一个列表。
04
第四节 排序算法
list /l st/
列表
列表 是Python中非常重要的数据类型,可以随时添加和删除其中的元素。
如:b=[12,8,9,18,20]
d=b[0]
设置最大数变量d的初始值为列表b中的第1个元素。
则d=( )
12
04
第四节 排序算法
04
第四节 排序算法
i04
第四节 排序算法
sum
/s m/
合计、总计
Sum( )函数 用于进行列表数据求和。
如Sum([2,3,4],5 )的计算结果为:
14
04
第四节 排序算法
Iterable
可迭代对象
/ t e bl /
(可以是元组、列表或字典等。)
04
第四节 排序算法
length
/le kθ/
长度
Len( )函数返回对象(字符串、列表、元组等)长度或项目个数。
如Len([1,2,5])的值为 。
3
5
Len([11,12,5,8,9])的值为
04
第四节 排序算法——计算选手平均分
P71《1.去掉最高最低求平均值.py》
04
第四节 排序算法——冒泡排序法
什么是冒泡排序法?冒泡排序法是一种简单直观的排序算法,它重复地走访过要排序的数列。一次比较两个元素,如果他们的顺序错误,就把它们交换过来。
走访数列的工作是重复的进行,直到没有再需要交换的数,也就是说该数列已经排序完成。
这个算法名字的由来,是因为越小的元素会经由交换,慢慢像泡泡一样“浮”到数列的顶端。
按照得分高者名次靠前的原则,需要将10位选手的最终得分按照从高分到低分进行排序,计算机如何完成对选手成绩的排序呢?
在程序设计中,冒泡排序是比较常见的一种排序算法,下面我们一起探究该算法的实现过程。
04
第四节 排序算法1——冒泡排序法
排序数字:7,9,5,6,4
比较次数 第1轮: 第2轮: 第3轮: 第4轮:
第1次
第2次
第3次
第4次
个数:5
7,9,5,6,4
7,9,5,6,4
7,5,9,6,4
7,5,6,9,4
7,5,6,4,9
7,5,6,4,9
5,7,6,4,9
5,6,7,4,9
5,6,4,7,9
5,6,4,7,9
5,4,6,7,9
5,6,4,7,9
5,4,6,7,9
4,5,6,7,9
游戏:学生手拿代表身高大小不一的数,按照由矮到高来排序。
04
第四节 排序算法1——冒泡排序法
排序数字:7,9,5,6,4
比较次数 第1轮: 第2轮: 第3轮: 第4轮:
第1次
第2次
第3次
第4次
个数:5
7,9,5,6,4
7,9,5,6,4
7,5,9,6,4
7,5,6,9,4
7,5,6,4,9
7,5,6,4,9
5,7,6,4,9
5,6,7,4,9
5,6,4,7,9
5,6,4,7,9
5,4,6,7,9
5,6,4,7,9
5,4,6,7,9
4,5,6,7,9
游戏:学生手拿代表身高大小不一的数,按照由矮到高来排序。
04
第四节 排序算法1——冒泡排序法
轮数 排序数个数 比较次数 比较次数规律 排出数 结果
第1轮
第2轮
第3轮
第4轮
排序数字:7,9,5,6,4
个数:5
第1大数
第2大数
第3大数
第4大数
第5大数
第4轮
5
4
3
2
4
3
2
1
5-1
5-2
5-3
5-4
9
7
6
5
4
比较轮数:
5-1=4
个数-1
个数-轮数
个数: i
比较轮数:
i-1
规律:
轮数 排序数个数 比较次数 排出数
第1轮
第2轮
……
第i-1轮
第1大数
第2大数
……
第i-1大数
i
i-1
……
2
i-1
i-2
……
i-(i-1)
个数-轮数
规律:
04
第四节 排序算法1——冒泡排序法
排序算法—冒泡排序
人工:易出错、效率低
① 有 i 个数据
④ 如果比较两个数时前面数大
②需要 i-1 轮排序 k
③ 每轮 i-k (轮数)次比较
得到排序结果

就交换两个数据
排序器
用列表 s 存储数据
for k in range (0, len(s)-1):
循环


循环
for i in range (0, len(s)-k-1):
if s[i]>s[i+1]:
s[i],s[i+1]=s[i+1],s[i]
print("排序结果为:",s)
多元赋值
程序:高效、自动化
# 控制比较轮数
# 每轮比较次数
# 判断相邻两数值的大小
# 符合判断条件情况,交换位置
#显示比较过程
预习P72-73
04
第四节 排序算法1——冒泡排序法
2019 女排世界杯得分
04
第四节 排序算法1——冒泡排序法
用列表 s 存储数据
for k in range (0, len(s)-1):
循环


循环
for i in range (0, len(s)-k-1):
if s[i]>s[i+1]:
s[i],s[i+1]=s[i+1],s[i]
print("排序结果为:",s)
多元赋值
1.女排比赛程序.py
04
第四节 排序算法1——冒泡排序法
04
第四节 排序算法1——冒泡排序法
P75《4.冒泡排序编号成绩对应.py》
04
第四节 排序算法2——简单快速的桶排序法
04
第四节 排序算法2——简单快速的桶法
04
第四节 排序算法2——编程实现桶排序
04
第四节 排序算法3—用列表方法排序
list /l st/
列表
列表 是Python中非常重要的数据类型,可以随时添加和删除其中的元素。
列表对向的追加,插入,删除,排除等称谓列表方法。
格式为:列表名. 方法( )
例如:列表的sort /s rt/ 方法可以实现排序(如果是字符串,按照首字母进行排序)默认升序。r
p=[5,6,2,8,3,7]
p.sort()
Print(p)
p.sort(reverse=True)
print(p)
reverse /r v rs/
反转;交换
第四节排序算法
04
听写关键单词
感谢聆听
04
第四节 排序算法——练一练
1.如图,运行程序时,输入"5,3,6,7,2,1",其输出结果为( )。
A.3 B.2 C.7 D.1
04
第四节 排序算法——练一练
2.如图,m的值为( )。
A.评委打分去掉最高分和最低分的平均值
B.评委打分去掉最高分和最低分的和
C.评委打分的平均值
D.评委打分的总和
02
第二节 枚举算法
02
第二节 枚举算法
02
i=0 #记录循环次数
j=0 #记录方案数量
for a in range(1,11): #10克砝码的范围
for b in range(1,21): #5克砝码的范围
for c in range(1,41): #2克砝码的范围
for d in range(1,41): #1克砝码的范围
i=i+1
if a+b+c+d==40 and 10*a+5*b+2*c+d==100:
print(a,b,c,d)
j+=1
print("共循环次数:",i," ",j,"种方案")
i=0 #记录循环次数
j=0 #记录方案数量
for a in range(1,7+1): #10克砝码的范围
for b in range(1,17+1): #5克砝码的范围
for c in range(1,37+1): #2克砝码的范围
for d in range(1,37+1): #1克砝码的范围
i=i+1
if a+b+c+d==40 and 10*a+5*b+2*c+d==100:
print (a,b,c,d)
j+=1
print("共循环次数:",i," ",j,"种方案")
共循环次数: 320000 34 种方案
共循环次数: 162911 34 种方案
第二节 枚举算法
砝码称重问题和优化问题
i=0 #记录循环次数
j=0 #记录方案数量
for a in range(1,11): #10克砝码的范围
for b in range(1,21-a): #5克砝码的范围
for c in range(1,41-b): #2克砝码的范围
for d in range(1,41-a-b-c): #1克砝码的范围
i=i+1
if a+b+c+d==40 and 10*a+5*b+2*c+d==100:
print (a,b,c,d)
j+=1
print("共循环次数:",i," ",j,"种方案")
i=0 #记录循环次数
j=0 #记录方案数量
for a in range(1,8): #10克砝码的范围
for b in range(1,21-2*a): #5克砝码的范围
for c in range(1,41-b): #2克砝码的范围
for d in range(1,41-a-b-c): #1克砝码的范围
i=i+1
if a+b+c+d==40 and 10*a+5*b+2*c+d==100:
print (a,b,c,d)
j+=1
print("共循环次数:",i," ",j,"种方案")
共循环次数: 52585 34 种方案
共循环次数: 35980 34 种方案
第二节 枚举算法
砝码称重问题和优化问题
02
02
第二节 枚举算法
第一节 生活中的算法
01
第一节 生活中的算法
01
伪代码
伪代码,是介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法,其目的是使被描述的算法可以容易地转化为运用任何一种编程语言实现(C、 Java、python等)。
伪代码描述算法在形式上并不是非常严格,在某些方面可能显得不太正规,但它可以屏蔽算法的部分实现细节,让我们专注于算法的核心思想和关键步骤。
01
第一节 生活中的算法—伪代码
02
for x in range(100,1000): #三位密码的范围
if "1" in str(x) and x%10==8:
print (x)
#寻找忘记的一个三位自然数密码,前两位包含1,个位数是8
第二节 枚举算法
04
第四节 排序算法——冒泡排序法

展开更多......

收起↑

资源预览