程序20
题目:一球从100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
代码 :
def calculate_faller(height, n): """计算初始高度为height时,落体第n次落地时的总行程、及第n次反弹(后)高度""" height_n = height #初始化第n次落地时的高度,此时为第0次落地时(落地前)的高度,经过1次for循环后height_n为第一次... sum_n = 0 #经历的总长度 for i in range(n): sum_n += height_n * 2 height_n = height_n / 2 sum_n = sum_n - height return sum_n, height_n if __name__ == '__main__': height = 100 #设置初始高度 n = 10 #设置落地次数 result = calculate_faller(height, n) print(f"第{n}次落地时,共经历{result[0]}米,第{n}次反弹{result[1]}米高。")成果:
第10次落地时,共经历299.609375米,第10次反弹0.09765625米高。
后记:
1.算法注意:for循环里,要先计算反弹前的总行程,再计算第n次反弹(后)高度。
2.初始行程多算一遍初始高度,for循环后要减去。
3.返回的2个值,实际上是2个值的元组,按元组使用。