Python基础编程20例之六球落体
20221231星期六:
""" 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? """ # 方式一: """ sum1 = [] height = [] hei = 100.0 # 起始高度 for i in range(1, 11): # 从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下) if i == 1: sum1.append(hei) else: sum1.append(2*hei) hei /= 2 height.append(hei) print("总高度:tour = %.3f"%sum(sum1)) print("第10次反弹高度:height = %.3f"%height[-1]) # 总高度:tour = 299.609 # 第10次反弹高度:height = 0.098 """ # 方式二: """ # 从第二次落地开始,落地的距离应该是反弹高度乘以2(弹到最高点再落下): def ballMerge(n): count_hei = 0 # 第n次落地经过的距离 height = 100 # 第n次落地后,弹起的高度 for i in range(1,n+1): if i == 1: count_hei = 100 height = 50 else: count_hei += (100/(2**(i-1)))*2 height = 100/(2**i) print("第 {} 次落地经过的距离为:{} 第 {} 次落地后弹起的高度为:{}".format(n,round(count_hei,3),n,round(height,3))) ballMerge(10) # 第 10 次落地经过的距离为:299.609 # 第 10 次落地后弹起的高度为:0.098 """ # 方式三:递归算法: """ def height(n): if n == 0: return 100 else: return height(n-1)/2 count = 10 sum_height = 0 for i in range(0,count): if i == 0: sum_height = sum_height + height(i) else: sum_height = sum_height + height(i) * 2 print("总高度:{}".format(round(sum_height,3))) print("第10次落地后弹起的高度为:{}".format(round(height(10),3))) # 总高度:299.609 # 第10次落地后弹起的高度为:0.098 """