zoukankan      html  css  js  c++  java
  • 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版】

  • 相关阅读:
    leetcode 43. 字符串相乘
    leetcode 20. 有效的括号 (python)
    leetcode 125. 验证回文串(python)
    leetcode 171. Excel表列序号(python)
    leetcode 190. 颠倒二进制位(c++)
    leetcode 122. 买卖股票的最佳时机 II (python)
    leetcode 118. 杨辉三角(python)
    leetcode 141. 环形链表(C++)
    leetcode 189. 旋转数组(python)
    leetcode 217. 存在重复元素 (python)
  • 原文地址:https://www.cnblogs.com/iderek/p/5967071.html
Copyright © 2011-2022 走看看