2014-02-07 39 views
0

我收到float對象在嘗試對質量塊上的重力進行計算時出現無法調用的錯誤。浮動不可召回

def grav(): 
    mass = float(input('Enter a mass[kg]: ')) 
    dist = float(input('Enter a distance from the surface of earth [m]: ')) 
    rad = 6.3781*10**6 
    me = 5.97219*10**24 
    gr = 6.67300*10**-11 
    f = ((gr((me)*(mass)))/((rad)+(dist)**2)) 
    return f 

grav() 

它給在那裏一切都被計算

+1

第7行,您錯過* gr * – MarshalSHI

回答

3
gr((me)*(mass)) 

以上試圖調用gr就像是一個功能部分的浮動錯誤。這只是一個常數。無論如何,不​​需要所有的括號。

gr * me * mass/(...) 

雖然你在分母上有一個錯誤。你需要除以(rad+dist)**2,而不是rad + (dist**2)(你現在正在做的)。

共有

f = gr * me * mass/(rad + dist)**2 

這就是你需要的。

如果我可以提出一個建議,讓你的變量名稱更自我記錄。我可以理解你的代碼,因爲我知道這個公式,但並不是每個人都有這個優勢。

force = G * MASS_OF_EARTH * mass/(EARTH_RADIUS + distance_from_earth)**2 

更容易閱讀,不是嗎?你不必是這個詳細,但太多比太少。在科學計算中可能會過度縮寫,但我真的建議不要這樣做。必要時要簡潔,但始終要自行記錄。

0

更改的行7像

f = ((gr*((me)*(mass)))/((rad)+(dist)**2)) 

或者可以簡單地用

f = gr*(me*mass)/(rad+dist)**2 

您的公式,將正常工作。

+0

後的符號您的底部編輯有誤。該部門的優先級高於加法部門。 – roippi

+0

@roippi哦是的,我的錯! :) –