Python 万有引力定律-函数计算力F=((G*m1*m2)/(d**2))

Python 万有引力定律-函数计算力F=((G*m1*m2)/(d**2)),python,function,input,gravity,Python,Function,Input,Gravity,我目前正在努力学习Python,以便为社区的孩子们提供新的机会 我被困在函数上,我试图用万有引力定律方程计算两个空间物体之间的力。我不确定我做错了什么,我觉得我甚至可能没有调用m2,所以它可以计算,或者也许我需要生成特定于行星的函数,然后填充方程,并需要用户输入?以下是我到目前为止的情况: def gravitionalForce (m1, m2, d): #d=Distance G= 6.673*(10**-11) #Gravity m1 = 1.9891 * (10 ** 3

我目前正在努力学习Python,以便为社区的孩子们提供新的机会

我被困在函数上,我试图用万有引力定律方程计算两个空间物体之间的力。我不确定我做错了什么,我觉得我甚至可能没有调用m2,所以它可以计算,或者也许我需要生成特定于行星的函数,然后填充方程,并需要用户输入?以下是我到目前为止的情况:

def gravitionalForce (m1, m2, d): #d=Distance
    G= 6.673*(10**-11) #Gravity
    m1 = 1.9891 * (10 ** 30) # Sun
    m2.Jupiter= 1.8986*(10**27)#Jupiter
    m2.Saturn = 5.68646*(19**26)#Saturn
    m2.Neptune = 1.0243*(10*26)#Neptune
    d.Jupiter=7.41(10**11)
    d.Saturn=1.35(10**12)
    d.Neptune=4.45*(10**12)
    F=((G * m1 * m2) / (d ** 2))
    return F
 print (input("what planet you want to calculate? Jupiter, Saturn, Neptune? : ")

我从读书和观看youtube中学习,我知道我的理解存在漏洞。任何帮助或指导都将不胜感激

此代码存在一些不同的问题。我在下面稍微整理了一下,希望这能帮助你走上正轨

planets = {
    'Jupiter': {
        'm2': 1.8986,
        'd': 7.41
    }
}

def gravitionalForce (m1, planet): #d=Distance
    G = 6.673*(10**-11) #Gravity
    m1 = 1.9891 * (10 ** 30) # Sun

    planet_constants = planets[planet]

    F=((G * m1 * planet_constants['m2']) / (planet_constants['d'] ** 2))
    return F



planet = input("what planet you want to calculate? Jupiter, Saturn, Neptune? : ")
print(gravitionalForce(100, planet))

请注意,行星常数被移到a中,并且
m1
变量被传递一个常数
100

我会这样做:

# define your constants up here
values = {
    "Jupiter": { "Mass": 1.8986*(10**27),  "Distance": 7.41*(10**11) },
    "Neptune": { "Mass": 1.0243*(10*26),   "Distance": 4.45*(10**12) },
    "Saturn:": { "Mass": 5.68646*(19**26), "Distance": 1.35*(10**12) }
}

def gravitationalForce (m1, m2, d):
    g = 6.673*(10**-11) 
    f = (g * m1 * m2) / (d ** 2)
    return f

planet = input("what planet you want to calculate? Jupiter, Saturn, Neptune? : ")
sun_mass = 1.9891*(10**30)

# get the values based on the input from the dictionary above
planet_mass = values[planet]["Mass"]
distance = values[planet]["Distance"]

# pass those arguments into your function to calculate it
print(gravitationalForce(sun_mass, planet_mass, distance))
需要指出的几个问题:

  • d.Jupiter=7.41(10**11)
    这会产生错误
    TypeError:“float”对象是不可调用的
    ,因为您调用了类似
    function\u name()
    的函数,所以当您使用
    7.41(10**10)
    时,它会认为您正试图调用
    7.41
    。不要忘记在
    7.41
    (10**11)
    之间添加一个
    *

  • m2.Jupiter=1.8986*(10**27)
    这会产生错误
    AttributeError:“float”对象没有属性“Jupiter”
    ,因为您不能在不首先定义属性的情况下只分配参数
    m2
    属性。如果您想有多个选项,可以像上面一样使用字典,或者创建一个单独的类

  • print(输入(“你想计算什么行星?木星、土星、海王星?:”)
    这里您只是打印您输入的值。要获取输入值,请将其分配给一个变量。然后您必须在某个时间点使用参数调用函数
    重力力
    。不要在函数中定义参数,请将其取出,然后将其传递到函数中


  • 很抱歉,它离Python还很远Syntax@ZdaR:它实际上非常符合Python语法,但只是显示了对如何将概念转换为工作代码的误解。一个有用的答案比一个没有帮助的注释要好。顺便说一句,如果你要留下注释说
    d
    代表距离,而
    g
    st对于重力,您可以将这些变量定义为
    distance
    gravity
    。使代码具有描述性比留下过多的注释更容易,这将有助于您的学生。这很有道理!我甚至没有想过定义常量,非常感谢!您的第三点刚刚澄清了问题。比谢谢你!谢谢你!非常感谢你!谢谢你的介绍,我没有想到。再次感谢你!这就是我的结论,
    G=6.673e-11 m1=1.9891e30 def引力(质量2,距离):F=((G*m1*mass2)/(距离**2))返回(F)木星=引力(1.8986e27,7.41e11)土星=引力(5.6846e26,1.35e12)海王星=引力(1.0243e26,4.45e12)打印(木星)打印(土星)打印(海王星)