Python練習題 015:一顆自由落地的球


【Python練習題 015】 一球從100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地時,共經過多少米?第10次反彈多高?

----------------------------------------------------------

這題其實都可以筆算出來,因為也就是落地10次。看網上給出的結果也是五花八門,也不知道自己算的對不對,請大神們賜教。

我的思路是:除了第1次從100米高度落下,其余的9次都經歷了“反彈-落地”的過程,每個過程來回走過的長度相當於上一個過程的高度。因此,把第1個過程初始化並賦值,從第2個過程開始,先次上一個過程的高度計算進去,再將高度減半,傳遞給下一個過程進行計算。代碼如下:

a = [100]  #每個‘反彈落地’過程經過的路程,第1次只有落地(100米)
h = 100  #每個‘反彈落地’過程,反彈的高度,第1次為100米
print('第1次從%s米高落地,走過%s米,之后又反彈至%s米。' % (h, a[0], h/2))
for i in range(2,11):  #第1次已初始化,再循環9次
    a.append(h)  #先計算路程,再高度減半,因為一個‘反彈落地’為2個高度
    h = h / 2
    print('第%s次從%s米高落地,共走過%s米,之后又反彈至%s米。' % (i, h, sum(a), h / 2))

輸出結果如下:

第1次從100米高落地,走過100米,之后又反彈至50.0米。
第2次從50.0米高落地,共走過200米,之后又反彈至25.0米。
第3次從25.0米高落地,共走過250.0米,之后又反彈至12.5米。
第4次從12.5米高落地,共走過275.0米,之后又反彈至6.25米。
第5次從6.25米高落地,共走過287.5米,之后又反彈至3.125米。
第6次從3.125米高落地,共走過293.75米,之后又反彈至1.5625米。
第7次從1.5625米高落地,共走過296.875米,之后又反彈至0.78125米。
第8次從0.78125米高落地,共走過298.4375米,之后又反彈至0.390625米。
第9次從0.390625米高落地,共走過299.21875米,之后又反彈至0.1953125米。
第10次從0.1953125米高落地,共走過299.609375米,之后又反彈至0.09765625米。

即:第10次落地時,共走過了299.609375米,第11次反彈至0.09765625米的高度。

 

++++++++++++++++++++++++++++++++++++++

題目出處:編程語言入門經典100例【Python版】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM