问题描述:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
程序编写:
# !/usr/bin/env python3
# Filename:falling.py
class gravity(object):
def __init__(self):
pass
@staticmethod
def fall(init_hight,times):
#总路程,初始化为首次落地路程
total_dis = init_hight;
#下一次弹起高度
next_hight = init_hight/2;
for time in range(1,times+1):
print("[落地次数%d]当前路程%.2f,弹起高度:%.2f"%(time,total_dis,next_hight))
#计算每次弹起和落地路程
total_dis += next_hight*2
#修正下一次的高度
next_hight /=2
return {'TOTAL':total_dis,'HIGHT':next_hight}
if __name__ == '__main__':
info = gravity.fall(100,10)
print("降落总高度%.2f,下一次高度%.2f"%(info['TOTAL'],info['HIGHT']))
程序结果:
[落地次数1]当前路程100.00,弹起高度:50.00
[落地次数2]当前路程200.00,弹起高度:25.00
[落地次数3]当前路程250.00,弹起高度:12.50
[落地次数4]当前路程275.00,弹起高度:6.25
[落地次数5]当前路程287.50,弹起高度:3.12
[落地次数6]当前路程293.75,弹起高度:1.56
[落地次数7]当前路程296.88,弹起高度:0.78
[落地次数8]当前路程298.44,弹起高度:0.39
[落地次数9]当前路程299.22,弹起高度:0.20
[落地次数10]当前路程299.61,弹起高度:0.10
降落总高度299.80,下一次高度0.05
夹带私货: