如何用单输入变量构造方程

时间:2019-07-01 21:29:10

标签: python python-3.x

我正在尝试建立该方程-h =(GMT ^ 2 /4π^ 2)1/3 -R-其中“ h”是轨道卫星的高度,G是重力常数,M是地球的质量,R是地球的半径。对于给定值为“ T”的用户,程序必须返回允许用户“ T”的轨道周期所需的高度(h)

到目前为止,我已经尝试编写方程式,随后定义相关的常数。

h=[math.pow(((G*M*math.pow(T,2))/(4*math.pow(Pi,2))),1/3)-R]

G=6.67*math.pow(10,-11)
M=5.97*math.pow(10,24)
R=6371
T=input('Period of Orbit (T)=',)

print(h)

将鼠标悬停在第一行旁边的警告三角形上时,将显示错误消息“未定义的名称...”,该错误消息将继续显示到列表G,M,T,Pi和R,均为未定义。尝试运行程序时,内核中会再次出现此错误。在此先感谢您的任何帮助。

2 个答案:

答案 0 :(得分:0)

如果我猜对了您想要的东西,应该是这样的:

from math import pow, pi

R = 6371  # earth's radius
G = 6.67 * pow(10, -11)  # gravitational constant
M = 5.97 * pow(10, 24)  # earth's mass

# desired period
T = int(input('Period of Orbit (T)=',))

h = pow((G * M * pow(T,2)) / (4 * pow(pi,2)), 1/3) - R
print(f"Height needed: {h}")

我还添加了更多空白以提高可读性。我第二次建议定义一个函数,它看起来像:

from math import pow, pi

def calculate_orbit_height(period):
    R = 6371  # earth's radius
    G = 6.67 * pow(10, -11)  # gravitational constant
    M = 5.97 * pow(10, 24)  # earth's mass
    return pow((G * M * pow(period,2)) / (4 * pow(pi,2)), 1/3) - R

# desired period
T = int(input('Period of Orbit (T)=',))
print(f"Height needed: {calculate_orbit_height(T)}")

答案 1 :(得分:-2)

到目前为止,我已经注意到了几件事:

  1. 导入数学
  2. 在使用变量之前声明变量
  3. T是一个字符串,因此在方程式中使用int(T)
  4. 尝试使用math.pi

之后应该可以使用。Working example

编辑:正如Fred所指出的那样,方程式不必在列表中。