每日一练」巧用python做小学的数学题
很多的小学问题其实已经比较复杂了,我们运用传统的算法,可能会比较难以理解,这里我们可以巧用Python来完成一些小学题目的计算!
下边我们就一起来看看python是怎么计算的?
题目
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
代码
先上代码~
运行效果
题目详述
第一行:
tour = []
height = []
定义两个空白列表,分别赋值给tour和height,分别用来收集第n次落地后经过多少米,以及第n次反弹多高
第二行:
hei = 100.0 # 起始高度
tim = 10 # 次数
定义起始高度100,并赋值给hei,定义落地次数为10,赋值给变量tim,注意:#后边的为注释内容,不需要的可以删掉
第三行:
for i in range(1, tim + 1):
创建一个从1到tim的循环,并且将值赋给变量i
第四行:
if i == 1:
tour.append(hei)
else:
tour.append(2 * hei)
hei /= 2
height.append(hei)
我们通过分析知道从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下),而第一次落地的距离是自身的高度,所以经过判断,如果次数是1的话,落地距离就是高度自身,而下次弹起的高度就是上次的一半,所以变量hei变成原来的一半,并且将变量hei存入列表height里边,而从第二次之后,落地时此次经过的路程是2 * hei
第五行:
print('总高度:tour = {0}'.format(sum(tour)))
print('第10次反弹高度:height = {0}'.format(height[-1]))
总高度需要是每次经过路程相加,所以是sum(tour),而format是python专用的变量赋值参数,第10次反弹高度就是列表height最后一个值,即height[-1]
进阶:
利用这个原理发现原来的数学题就是这么简单
是不是很便捷呢
结束语
总体来说思路只要有了,以后遇到类似的问题就可以解决了,是不是发现原来Python也没有想象中的那么难!