Как я могу заставить Python печатать число, а не "Nan" - PullRequest
0 голосов
/ 27 сентября 2019

Поэтому я пытаюсь создать программу, которая будет вычислять очень сложное уравнение с некоторыми входными данными, которые должен предоставить пользователь, хотя, когда я печатаю переменные, он просто показывает как nan

Код:

import os
import math

os.system("CLS")

m = float(input("Mass (in kg): "))
r = float(input("Radius (in m): "))
A = math.pi*r**2
k = 0.5*1.22*0.75*A
I = float(input("Impulse of engine (in seconds): "))
T = float(input("Thrust of engine (in Kn): ")*1000)
t = I/T
g = 9.82
GravForce = m*g
q = math.sqrt((T-m*g)/k)
x = 2*k*q/m
p = 1.22

v = q*(1-math.exp(-x*t))/(1+math.exp(-x*t))
yb = (-m/(2*k))*math.log((T-m*g-k*v**2)/(T-m*g))
yc = (+m/(2*k))*math.log((m*g+k*v**2)/(m*g))

print("Velocity at burnout =",v)
print("Boost Phase Distance =",yb)
print("Coast Phase Distance =",yc)
print("Total Altitude =",yb+yc)

Спасибо за помощь, я исправил это, вместо того, чтобы ввод T вместо ввода, затем * 1000 Я удалил это и сделал ввод в ньютонах вместо килоньютона.

Ответы [ 2 ]

4 голосов
/ 27 сентября 2019

Проблема заключается в следующей строке кода

T = float(input("Thrust of engine (in Kn): ")*1000)

изменить его на

T = float(input("Thrust of engine (in Kn): ")) *1000
0 голосов
/ 27 сентября 2019

Этот код T оценивается как inf, поскольку он пытался преобразовать строку в тип с плавающей точкой.

input("Thrust of engine (in Kn): ")*1000) - это 1000 раз повторяющаяся входная строка, и он пытается привести к типу с плавающей точкой.
тип str не может быть приведен к типу с плавающей точкой, поэтому math оценивает его как inf.
math возвращает nan при вычислении с использованием inf.

import os
import math

os.system("CLS")

m = float(input("Mass (in kg): "))
r = float(input("Radius (in m): "))
A = math.pi*r**2
k = 0.5*1.22*0.75*A
I = float(input("Impulse of engine (in seconds): "))
T = float(input("Thrust of engine (in Kn): "))*1000
t = I/T
g = 9.82
GravForce = m*g
q = math.sqrt((T-m*g)/k)
x = 2*k*q/m
p = 1.22

v = q*(1-math.exp(-x*t))/(1+math.exp(-x*t))
yb = (-m/(2*k))*math.log((T-m*g-k*v**2)/(T-m*g))
yc = (+m/(2*k))*math.log((m*g+k*v**2)/(m*g))

print("Velocity at burnout =",v)
print("Boost Phase Distance =",yb)
print("Coast Phase Distance =",yc)
print("Total Altitude =",yb+yc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...