内容正文:
少儿编程课
1
牛吃草问题
牛吃草
3 × 10 ÷ 6 = 5天
一堆草,可供10头牛吃3天,那可供6头牛吃几天?
牛顿问题
英国著名的物理学家牛顿曾把题目变成了这样:
牧场上有一片青草,每天都生长得一样快。这片青草供给24头牛吃,可以吃6天,或者供给20头牛吃,可以吃10天,期间一直有草生长。如果供给19头牛吃,可以吃多少天?
这道题因牛顿提出而得名“牛顿问题”
牛顿问题
牛每天吃草,草每天在不断均匀生长
解题环节主要有三步:
1、求出每天长草量。
2、求出牧场原有草量。
3、求出牛可吃的天数。
牛顿问题
设一头牛1天吃的草为一份
24头牛6天吃草为1×24×6=144份,20头牛10天吃草1×20×10=200份
牛顿问题
无论是144还是200都是吃净了草地原有草量和每日的新增草量
原有草量 + 每天生长草量*6 = 144份
原有草量 + 每天生长草量*10 = 200份
所以:(200-144)= 每天生长草量*10 – 每天生长草量*6
说明牧场每天生长草量为14份
牛顿问题
原有草量 + 每天生长草量*6 = 144份
又知道每天生长草量为14份
所以144-14×6= 原有草量,说明原有草量为60份
牛顿问题
原有草量为60份,每天生长草量为14份,那么够19头牛吃几天?
x=0
while True:
if 60+14*x==19*x:
break
else:
x+=1
print(x)
抽水问题
一个水池有水不断灌入,现在用10台抽水机,20小时抽干;
15台抽水机,10小时抽干;如果有25台抽水机用多少小时?
10
抽水问题
问题分解
1、求出每小时进水量
2、求出水池原有水量
3、最后求出用多少小时
11
抽水问题
无论是200还是150都是水池原有水量和注入的新水量
原有水量 + 每小时注入水量*20 = 200
原有水量 + 每小时注入水量*10 = 150
所以:(200-150)= 每小时注入水量*20 – 每小时注入水量*10
说明每小时注入水量为5份
1、求出每小时进水量
12
抽水问题
原有水量 + 5*20 = 200
原有水量=100 份
2、水池原有水量
13
抽水问题
3、25台抽水机多少小时?
x=0
while True:
if 100+5*x==25*x:
break
else:
x+=1
print(x)
14
牛顿问题
牛顿问题中还有一些变形题目,比如:
冬天时牧场的草不是每天增长而是会每天的减少,问这种情况下可以供N头牛吃多少天?
牧场的草每天都在增长,可供牛吃N天,问有多少头牛?
抽水问题
滚梯行走问题
售票窗口问题
自定义牛顿问题函数
牛顿问题的精髓是在变化中找到不变的量
不变量包括:原有的数量和单位时间的变化量
自定义一个牛顿问题函数,将牛的数量和吃草时间作为函数的输入,根据不同数量的牛和不同的吃草时间计算出草原原有草量和每日变化草量
自定义牛顿问题函数-求解改变量和原有量
def newton(n1,d1,n2,d2): #n1头牛吃d1天吃完,n2头牛吃d2天吃完
m=n1*d1-n2*d2 #吃草量之差
n=d1-d2 #天数之差
a=m/n #吃草量之差/天数之差=单位时间草量
b=n1*d1-a*d1 #计算原有草量
return a,b
自定义牛顿问题函数-求解天数
def get_result(m,a,b): #m为牛的数量,a为单位时间增量,b为原有数量
x=0 #天数
while True:
if b+a*x==m*n:
break
else:
x+=1
return x
自定义函数解决牛顿问题
牧场上有一片青草,每天都生长得一样快。这片青草供给24头牛吃,可以吃6天,或者供给20头牛吃,可以吃10天,期间一直有草生长。如果供给19头牛吃,可以吃多少天?
a,b=newton(24,6,20,10) #计算每日草增量和原有草量
print(get_result(19,a,b)) #计算可以供19头牛吃几天
滚梯行走问题
地铁自动扶梯由下向上运行,出站时小男孩在电梯上每分钟走20级台阶,5分钟走到楼上;小女孩每分钟走15级台阶,6分钟