2013-10-16 23 views
0

我有這樣的代碼:請幫助我如何獲得用戶輸入的等式。Python用戶輸入 - 如何在等式中使用?

from __future__ import division 

pi = 3.14159265 
g = 6.67428*(10**-11) 

radius = raw_input("Enter Radius -->") 
def display_results(radius , mass , velocity): 
    print "Radius of the planet" , radius/1000 ,"km" 
    print "Mass of the planet" , float(mass/10**21) ,"(10**21 kg)" 
    print "Escape velocity of the planet" , velocity/1000 , "(km/s)" 

def escape_velocity(circumference , acceleration): 
    radius = circumference/(2*pi) 
    mass = (acceleration * radius ** 2)/g 
    vEscape = ((2*g*mass)/radius)**0.5 
    display_results(radius , mass , vEscape) 

escape_velocity(40075000 , 10) 

這裏是我應該做的事: 使用有效的主線邏輯來獲取用戶輸入,然後調用escape_velocity()函數來計算並顯示最終結果。下面是從程序運行示例應該是什麼樣子(**文字例如從用戶輸入):

Circumference (km) of planet? **38000** 
Acceleration due to gravity (m/s^2)? **9.8** 

Calculating the escape velocity... 
Planet radius = 6047.9 km 
Planet mass = 5370.7 x 10^21 kg 
Escape velocity = 10.9 km/s 

如何讓用戶輸入一個號碼,這樣我的程序會解方程。 我需要有用戶輸入:

Circumference (km) of planet? 
Acceleration due to gravity (m/s^2)? 

非常感謝!

+0

類型轉換。 'int(input(「blah」)''應該這樣做。順便說一下,你的縮進是錯誤的。如果你使用的是Python 3,那只是'輸入'。 –

回答

0

您已經有了讓用戶輸入數字並將其分配給變量radiusraw_input行)的語法。

您可以使用相同的語法來請求圓周和加速度輸入,然後使用接收用戶輸入的兩個變量作爲參數調用逃逸速度函數。 (在你的示例代碼中,這個函數被調用時使用兩個整數作爲參數(40075000,10),所以你需要改變它。)

2

我想知道你要求的用戶輸入並顯示你想要的結果使用以下代碼:

from __future__ import division 
import math 

pi = 3.14159265 
g = 6.67428*(10**-11) 

#radius = raw_input("Enter Radius -->") 
user_circum = raw_input("Circumference (km) of planet? ") 
user_acc = raw_input("Acceleration due to gravity (m/s^2)?") 

def display_results(radius , mass , velocity): 
    print "Radius of the planet" , radius ,"km" 
    print "Mass of the planet" , float(mass/10**15) ,"(10^21 kg)" 
    print "Escape velocity of the planet" , velocity/1000 , "(km/s)" 

def escape_velocity(circumference , acceleration): 
    circumference = float(circumference) 
    acceleration = float(acceleration) 
    radius = circumference/(2*pi) 
    mass = (acceleration * radius ** 2)/g 
    vEscape = ((2*g*mass)/radius)**0.5 
    display_results(radius , mass , vEscape) 

escape_velocity(user_circum, user_acc) 

但是,在等式計算中的一些數學看起來有點偏離。我會仔細檢查這些方程式,但你看起來很漂亮!希望這可以幫助。

+0

非常感謝你的回答。這個公式似乎有些問題:vEscape =((2 * g * mass)/ radius)** 0.5 - 它應該顯示爲 逃逸速度= 10.9 km/s,但它顯示了行星的逃逸速度3.44294353352( km/s)關於如何解決這個問題的任何想法? – user2888320

0

您需要將半徑轉換爲整數。因爲raw_input函數以字符串值的形式給出了輸出,所以你不能將str(radius)除以數字1000.你只需要這樣寫 radius = raw_input(「Enter Radius - >」) radius = int(radius ) 希望這將幫助你:)

您可以檢查出更多的raw_input here