Python之一个球从 100 米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第十次落地时,球共经过多少米? 第十次反弹多高?

1.百度到的讲解的比较详细的地址,思路写的也比较容易理解:
https://www.cnblogs.com/sangern/p/17404508.html
规律图如下:
 
total_distance = 100 #首次下落距离就是100
for bottom_count in range(1, 11): #第1次到第10次
    rebound = 100*0.5**bottom_count
    if bottom_count >= 2:
        total_distance += 2*100*0.5**(bottom_count-1)
    bottom_count += 1
print(f'球在经过10次落地时,共经过{total_distance}米,第10次反弹{rebound}米')

 2.咨询组内同事写的,思路基本和百度到的那篇一样:

total_distance=100
print(f"第10次反弹高度为{100*0.5**10}米") #100*0.5**i(i是第几次)
for i in range(2,11):
    total_distance+=100*0.5**(i-1)*2 #距离是100*0.5的(n-1)次方*2
print(f"第10次反弹经过距离为:{total_distance}")

3.老师写的,另一种思路:

tour = []  # 每次落地经过的容器高度
height = []  # 每一次反单的高度
hei = 100.0
for i in range(1, 11):
    if i == 1:
        tour.append(100)
    else:
        tour.append(hei * 2)
    hei /= 2  # 反单的高度
    height.append(hei)

print(tour)
print(sum(tour))  # 计算和

重点还是需求分析,必要是画图,多看几次球落地的规律

4.另一个同事写的:

n = 1#次数
a = 100#经过米数
g = float(100 /2)#反弹的高度
while True:
    n=n+1
    a=a+g+g
    g=float(g/2)
    if n==10:
        print(f"经过米数{a}")
        print(f"反弹的高度{g}")
        break

你可能感兴趣的:(python)