【上节课衔接语】
好的上节课呢我们学习了如何编写程序来判断素数,并了解程序复杂性的概念。那么这节课呢,我们将了解什么是穷举算法,并利⽤它解决鸡兔同笼问题。
1、知识点
● 穷举算法
● ⽅程思想
● format() 的⽤法
● break 跳出循环
2、课前导⼊、任务说明部分
【知识概览】
3、任务清单视频1:Python-L2-P6 (按钮继续!!!)
【知识点】
1、数学⽅法解决鸡兔同笼:
【假设法】——假设全是鸡
【⽅程法】
2、计算机解决鸡兔同笼:
【穷举法】
穷举法的基本思想是根据题⽬的部分条件确定答案的⼤致范围,并在此范围内对所有可能的情况逐⼀验证,直到全部情况验证完毕,符合验证条件的情况就是该问题的解。
【提问】直接按钮继续了,可能问不到
Q:对穷举法思想,⾃⼰能够完全的理解么?还需要⽼师来讲解⼀下么?
A:穷举法的基本思想是,根据题⽬条件确定答案的⼤致范围,然后在此范围内对所有可能的情况逐⼀验证。
⽐如说鸡和兔⼀共就35只,我假设鸡⼀只,兔34只,验证脚的数⽬是否正确,不正确再继续,鸡2只,兔33只去验证。
直到脚的数⽬正确,那么就得到了题⽬的答案。
(【下⼀个衔接话术】)
视频中讲解了穷举法的基本思想,接下来我们将⽤代码实现穷举思想,解决鸡兔同笼问题。
视频2:穷举求解
【创作任务】利⽤穷举思想,结合 for 循环,解决鸡兔同笼问题。
【知识点】
x 代表鸡数,y 代表兔⼦数
【视频任务】
【效果截图】
【代码块】
【代码截图】
【下⼀个衔接话术】
那么接下来我们⼀起学习 format ( ) 函数的使⽤⽅法,来美化输出的结果。
视频3:美化输出
【创作任务】利⽤ format ( ) 函数进⾏美化输出。
【知识点】
format ( ) 格式化字符串,配合 {} 使⽤。使⽤ format ( ) 中的参数按顺序依次填充前⾯的 { }。
# 鸡兔同笼,共35个头,94只脚1
for x in range(35):2
y = 35 - x # 兔子的数量3
if 2 * x + 4 * y == 94:4
print("鸡有
5
【视频任务】【效果截图】
【代码块】
【代码截图】
# 鸡兔同笼,共35个头,94只脚1
for x in range(35):2
y = 35 - x # 兔子的数量3
if 2 * x + 4 * y == 94:4
print("鸡有{}只,兔子有{}只 ".format(x, y))
5
【答案】
【效果截图】
【代码块】
【代码截图】【下⼀个衔接话术】
好的,接下来我们将学习可以跳出循环的 break 语句,来提⾼程序的执⾏效率。视频4:算法优化
【创作任务】利⽤ break 语句提⾼程序执⾏效率。
【知识点】
1、break 语句⽤于跳出循环,不再执⾏与 break 具有相同缩进结构的后续代码
2、导⼊了 t ime 库,运⽤ t ime( ) ⽅法记录了程序的运⾏时间。
【视频任务】
【效果截图】x = 20191
z = 142
print("{}年{}月{}日".format(x,y,z))
3
【代码块】
【代码截图】
【提问】
Q:break 语句的作⽤是什么呢?
A:break 语句可以⽤于跳出循环,得到结果后就终⽌这个循环来达到避免资源浪费的效果,提⾼程序的执⾏效率。
【图⽚任务】
import time 1
start = time.time()2
# 鸡兔同笼,共 350000 个头,940000 只脚3
head = 350000 # 头总数4
foot = 940000 # 脚总数5
for x in range(head):6
y = head - x # 兔子的数量7
#print(x)8
if 2 * x + 4 * y == foot:9
print(" 鸡有 {} 只,兔子有 {} 只 ".format(x, y))10
break # 退出循环11
end = time.time()12
print(" 程序耗时为:{} 秒 ".format(end-start))
13
【效果截图】
【代码块】
def solve(): 1
【代码截图】4、课中拓展
1、操作题:百钱买百鸡(不做)
【题⽬】
【答案】
count = 0
2 for x in range(10):
3 for y in range(10):
4 for z in range(10):
5 if x + y == z and x != y and x != z and y != z:
6 print("{}+{}={}".format(x, y, z))
7 count = count + 1
8 return count
9
10print(" 一共有 {} 种 ".format(solve()))
11
【效果截图】
【代码块】
2、操作题:换零钱1(难)
【题⽬1】
def chicken():1
# 设公鸡 x 只,母鸡 y 只,小鸡 z 只,则 x+y+z=1002
for x in range(1, 100):3
for y in range(1, 100):4
z = 100 - x - y 5
if 5 * x + 3 * y + z / 3 == 100:6
print(" 公鸡 {} 只,母鸡 {} 只,小鸡 {} 只。".format(x, y,
z))
7chicken()8
【题⽬2 续】
【答案】
【效果截图】
【代码块】
【代码截图】def change(money):1
count = 0 # 方案数2
for i in range(money // 1 + 1):3
for j in range(money // 2 + 1):4
for k in range(money // 5 + 1):5
if i * 1 + j * 2 + k * 5 == money:6
print("1 元
k, " 张 ")
7 count = count + 18 # 统计总共有多少种方案
9 print(" 共有
5、总结
①学⽣总结完毕,发送总结卡⽚
②⽼师总结:(可发总结卡⽚)
这节课我们利⽤穷举算法解决了鸡兔同笼问题,利⽤ format( ) 函数优化了输出效果,利⽤ break 语句跳出循环的作⽤提⾼了程序的执⾏效率。
③询问本堂课是否还有疑问
④看结尾番剧视频,结束告诉⽼师
点击下课,请学⽣评价。
⑤下课话术
好的,那么我们这节课到这⾥就结束啦,期待你下⼀节课更加精彩的表现,训练师再⻅~下载本文