前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python编程经典案例【考题】自由落体运动球的运动轨迹

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

作者头像
阿黎逸阳
发布2022-11-11 14:24:16
1.4K0
发布2022-11-11 14:24:16
举报
文章被收录于专栏:阿黎逸阳的代码

本文和你一起探索Python编程经典案例,让你沉浸式学习Python。助你期末考试拿高分,拿到大厂的心仪offer。

你可以先自己拿着题目去思考有多少种不同的解题方法,然后再对照本文解题方法进行比较。

有不同的见解欢迎到公众号中跟我一起探讨。

本文目录

  1. 经典案例【考题】
  2. 经典案例解题方法 2.1 方法一:应用for循环求出自由落体运动总长度和第n次反弹的高度 2.1 方法二:应用while循环求出自由落体运动总长度和第n次反弹的高度

一、经典案例【考题】

代码语言:javascript
复制
问题:一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它再第5次弹起至最高点时,共经过多少米?第5次反弹多高?
代码语言:javascript
复制
输入:100, 5
代码语言:javascript
复制
输出:(290.625, 3.125)
代码语言:javascript
复制
其中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次反弹的高度。

具体代码如下:

代码语言:javascript
复制
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:表示运动总长度。

得到结果:

代码语言:javascript
复制
(290.625, 3.125)

其中290.625为球自由落体运动第5次落地时共经过的米数,3.125为第5次反弹的高度。

如对循环不是很理解,可先看下让你彻底弄懂【python循环语句】一文。

感兴趣的同学可以把代码复制到Python中,通过调节初始高度和落地次数,获取自由落体运动经过的总长度和第n次反弹高度。

代码语言:javascript
复制

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

假设问题微调成:一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它再第10次弹至最高点时,共经过多少米?第10次反弹多高?

原理类似,只不过用while循环模拟自由落体的运动轨迹,得到总长度和第n次反弹的高度。

具体代码如下:

代码语言:javascript
复制
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)

得到结果:

代码语言:javascript
复制
(299.70703125, 0.09765625)

可以手动验证,两种方法得到的结果是一致的。

至此,Python中的编程经典案例【考题】之自由落体运动球的运动轨迹已讲解完毕。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档