Python编程经典案例【考题】自由落体运动球的运动轨迹

本文和你一起探索Python编程经典案例,让你沉浸式学习Python。助你期末考试拿高分,拿到大厂的心仪offer。你可以先自己拿着题目去思考有多少种不同的解题方法,然后再对照本文解题方法进行比较。有不同的见解欢迎到公众号中跟我一起探讨。

  
  

一、经典案例【考题】

  
问题: 一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它再第5次弹起至最高点时,共经过多少米?第5次反弹多高?
  
输入: 100, 5
  
输出:(290.625, 3.125)
  
其中290.625为球自由落体运动第5次弹至最高点时共经过的米数,3.125为第5次反弹的高度。

  
  

二、经典案例解题方法

  

方法一:应用for循环求出自由落体运动总长度和第n次反弹高度

  
首先来看下球从100米高自由落下,它的前几次运动轨迹是什么样的。
  

在这里插入图片描述
  
可以发现每一次球反弹都导致球弹起来的高度比上一次的高度缩短了一半,第五次弹至最高点的总长度为100+50✖2+25✖2+12.5✖2+6.25✖2+3.125=290.625。通过for循环,模拟自由落体的运动轨迹,可以得到总长度和第n次反弹的高度。
  
具体代码如下:

def free_fall_game1(x, cnt):
    '''
    x:初始高度
    cnt:第几次反弹
    '''
    high = x
    sum_high = high
    cur_high = 0
    for i in range(cnt):
        if i<cnt-1:
            cur_high = high/2
            sum_high += cur_high*2
            high = high/2
        else:
            cur_high = high/2
            sum_high += cur_high
            high = high/2
    return sum_high,cur_high
    
free_fall_game1(100, 5)

cur_high:表示当前反弹高度。
  
sum_high:表示运动总长度。
  
得到结果:

(290.625, 3.125)

其中290.625为球自由落体运动第5次落地时共经过的米数,3.125为第5次反弹的高度。如对循环不是很理解,可先看下让你彻底弄懂【python循环语句】一文。感兴趣的同学可以把代码复制到Python中,通过调节初始高度和落地次数,获取自由落体运动经过的总长度和第n次反弹高度。

  

方法二:应用while循环求出自由落体运动总长度和第n次反弹高度

  
假设问题微调成:一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它再第10次弹至最高点时,共经过多少米?第10次反弹多高?原理类似,只不过用while循环模拟自由落体的运动轨迹,得到总长度和第n次反弹的高度。
  
具体代码如下:

def free_fall_game2(x, cnt):
    '''
    x:初始高度
    cnt:第几次落地
    '''
    i = 1
    sum = 0
    while i<=cnt:
        sum += x
        x = x/2
        sum += x
        i += 1
    return sum, x
    
free_fall_game2(100, 10)

得到结果:

(299.70703125, 0.09765625)

可以手动验证,两种方法得到的结果是一致的。至此,Python中的编程经典案例【考题】之自由落体运动球的运动轨迹已讲解完毕。如想了解更多Python中的函数,可以翻看公众号中“学习Python”模块相关文章。

  
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
用Python绘制520永恒心动
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
【Python】情人节表白烟花(带声音和文字)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

长按(扫一扫)识别上方二维码学习更多Python和建模知识,让你的学习和工作更出彩

猜你喜欢

转载自blog.csdn.net/qq_32532663/article/details/125589031