(共17张PPT)
试密码的过程
数字拨到000 尝试按下解锁按钮
数字拨到001 尝试按下解锁按钮
2. 数字拨到002 尝试按下解锁按钮
3. 数字拨到003 尝试按下解锁按钮
4. 数字拨到004 尝试按下解锁按钮
.
.
.
100.数字拨到099 尝试按下解锁按钮
.
.
.
列举
判断
把问题所有的可能解一一列举出来,并判断每一个列举出的可能解是否为正确的解。
for <变量> in <序列>:
if <条件>:
print(变量)
枚举算法
1 2 过 4 5 过…
“不说3”报数游戏,学生依次报数,遇到3的倍数或者含有3的数就说“过”,下一同学继续报数。
人肉计算机
输出1-99所有与三无关的数
列举
判断
分析:可用变量i表示要列举的自然数。
列举范围:
1——99
判断条件:
i 能否被3整除
i 个位上是否有3
i 十位上是否有3
注意:在列举过程中要既不遗漏,又不重复。
流程图
列举范围:
1—99
判断条件:
i 能否被3整除
i 个位上是否有3
i 十位上是否有3
用变量i表示要列举的自然数。
N
N
Y
Y
i in 1-99
i%3!=0
i%10!=3
i//10!=3
i取下一个值
输出i
开始
结束
for i in range(1,100):
if i%3!=0 and i%10!=3 and i//10!=3:
print(i)
编程初体验
N
N
Y
Y
i in 1-99
i%3!=0
i%10!=3
i//10!=3
i取下一个值
输出i
开始
结束
中国古代数学家张邱建在《算经》中提出了著名的“百钱买百鸡”问题:
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,问翁、母、雏各几何?
参考资料:
·教材69页
·任务网站任务2提示
确定枚举对象及范围
枚举对象:
公鸡 x
母鸡 y
小鸡 z
枚举范围:
0≤x≤20
0≤y≤33
0≤z≤100
确定判定条件:
x+y+z=100
5x+3y+z/3=100
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,问翁、母、雏各几何?
参考资料:
·教材69页
·任务网站任务2提示
for x in range( ):
for y in range( ):
for z in range( ):
if and :
print("公鸡:",x,"母鸡:",y,"小鸡:",z)
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,问翁、母、雏各几何?
参考资料:
·教材69页
·任务网站任务2提示
for x in range(21):
for y in range(34):
for z in range(101):
if x+y+z==100 and 5*x+3*y+z/3==100 :
print("公鸡:",x,"母鸡:",y,"小鸡:",z)
多重循环
s=0
s=s+1
print(“共循环”,s,”次”)
能否优化,提高效率
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,问翁、母、雏各几何?
参考资料:
·教材69页
·任务网站任务2提示
for x in range(21):
for y in range(34):
for z in range(100):
if x+y+z==100 and 5*x+3*y+z/3==100 :
print("公鸡:",x,"母鸡:",y,"小鸡:",z)
if 5*x+3*y+(100-x-y)/3==100:
print("公鸡:",x,"母鸡:",y,"小鸡:",100-x-y)
此时枚举多少次?
任务3:将一张100元面额的纸币兑换成零钱(5元、10元、20元中任意多个面额),编写程序计算输出每种换法,并统计共有多少种换法。
参考资料:
·教材70页“随堂练习”
·任务网站任务3提示
枚举对象:
枚举范围:
判定条件:
5元 i 10元 j 20元 k
0≤i ≤20 0≤j≤10 0≤k ≤5
5*i+10*j+20*k=100
任务3:将一张100元面额的纸币兑换成零钱(5元、10元、20元中任意多个面额),编写程序计算输出每种换法,并统计共有多少种换法。
参考资料:
·教材70页“随堂练习”
·任务网站任务3提示
for i in range(21):
for j in range(11):
for k in range(6):
if i*5+j*10+k*20==100:
print("五元:",i,"十元:",j,"二十元:",k)
s=0
s=s+1
print("换法:",s)
人PK计算机
1.枚举算法的概念
2.枚举算法的结构特征
4.枚举算法的注意点
3.枚举算法的设计步骤
一一列举;逐个判定
循环结构中嵌套分支结构
确定列举对象和范围;明确判定条件
尽可能缩小解的列举范围
同 学 们 再 见