Python 万有引力定律-函数计算力F=((G*m1*m2)/(d**2))
我目前正在努力学习Python,以便为社区的孩子们提供新的机会 我被困在函数上,我试图用万有引力定律方程计算两个空间物体之间的力。我不确定我做错了什么,我觉得我甚至可能没有调用m2,所以它可以计算,或者也许我需要生成特定于行星的函数,然后填充方程,并需要用户输入?以下是我到目前为止的情况: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
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)打印(木星)打印(土星)打印(海王星)