博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python通过面向对象程序设计方法 实现铅球运行轨迹的计算
阅读量:4170 次
发布时间:2019-05-26

本文共 1254 字,大约阅读时间需要 4 分钟。

本文我们通过面向对象程序设计的方法,实现铅球运行轨迹计算的程序。
这个问题中有一个铅球对象,它有4个属性:xpos,ypos,xvel,yvel

构建投射体的类Projectile用来生成铅球对象,不断的更新对象变量,以此来描述这个问题。

用python3编写Projectile.py文件和main_qianqiu.py文件。

Projectile.py文件如下:

from math import sin,cos,radians

class Projectile:
    def __init__(self,angle,velocity,height):
        #根据给定的发射角度,初始速度和位置创建一个投射体对象
        self.xpos=0.0
        self.ypos=height
        theta=radians(angle)
        self.xvel=velocity*cos(theta)
        self.yvel=velocity*sin(theta)
    def update(self,time):
        #更新投射体的状态
        self.xpos=self.xpos+time*self.xvel
        yvel1=self.yvel-9.8*time
        self.ypos=self.ypos+time*(self.yvel+yvel1)/2.0
        self.yvel=yvel1
    def getY(self):
        #返回投射体的y轴坐标
        return self.ypos
    def getX(self):
        #返回投射体的x轴坐标(即水平距离)
        return self.xpos

找到python的安装目录,将Projectile.py文件放到文件夹python35/Lib中,如下图:

main_qianqiu.py文件内容如下:

from Projectile import *

def getInputs():
    a=eval(input('Enter the launch angle(in degrees):'))
    v=eval(input('Enter the initial velocity(in meters/sec):'))
    h=eval(input('Enter the initial height(in meters):'))
    t=eval(input('Enter the time interval:'))
    return a,v,h,t
def main():
    angle,vel,h0,time=getInputs()
    shot=Projectile(angle,vel,h0)
    while shot.getY()>=0:
        shot.update(time)
    print('\nDistance traveled:{0:0.1f} meters.'.format(shot.getX()))
if __name__=='__main__':
    main()

运行main_qianqiu.py文件,输入输出如下:

(完)

你可能感兴趣的文章
对话周鸿袆:从程序员创业谈起
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
vue项目打包后无法运行报错空白页面
查看>>
1136 . 欧拉函数
查看>>
面试题:强制类型转换
查看>>
Decorator模式
查看>>
Template模式
查看>>
Observer模式
查看>>
高性能服务器设计
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>
Pentaho BI开源报表系统
查看>>
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
android中SharedPreferences的简单例子
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>
andorid里关于wifi的分析
查看>>
Hibernate和IBatis对比
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Android 的source (需安装 git repo)
查看>>
LOCAL_PRELINK_MODULE和prelink-linux-arm.map
查看>>