# Python – Input Filtering, Calculating with a Variable Amount of Inputs

I’ve been working on an Aerodynamics calculator using python (which I’m relatively new at), In this program, a value can be calculated based on multiple different inputs ie. a calculates b, b calculates c, or c can find b and b can find a.

To elaborate on the function of this program it will loop through it’s logic until it has found all the things it could with the given input(s). The code is pretty long for it’s function and that’s why I’d like to see if it could be optimized or if I could do anything better. For the input method, the input is a string. The code is as follows:

``````def Find_Pressure(temp):
pressure = (101.29 * (((temp + 273.1) / 288.08) ** 5.256))
return pressure

def Find_Temp_Alt(alt, ground_temp):
Temp = ground_temp - (0.00649 * alt)
return Temp

def Find_Density(pressure, temp):
density = (pressure / (0.2869 * (temp + 273.1)))
return density

def Find_Alt_Temp(temp, ground_temp):
Alt = ((ground_temp - temp) / 0.00649)
return Alt

def is_Valid(x):
try:
float(x)
return True
except ValueError:
return False

def Parser(ground_temp, temp, alt, pressure, density):
a = t = p = d = False
run = True
Alt = Temp = Pressure = Density = "N/A"
if is_Valid(alt):
Alt = float(alt)
a = True
if is_Valid(temp):
Temp = float(temp)
if Temp <= -273.1:
t = False
else:
t = True
if is_Valid(pressure):
Pressure = float(pressure)
p = True
if is_Valid(density):
Density = float(density)
d = True

if not is_Valid(ground_temp):
print('Enter Ground Temp')
else:
G_T = float(ground_temp)
while run:
run = False
if a and not t:
Temp = Find_Temp_Alt(Alt, G_T)
t = True
run = True

if t and not a:
Alt = Find_Alt_Temp(Temp, G_T)
a = True
run = True

if p and not t:
Temp = ((288.08 * ((Pressure / 101.29) ** (1 / 5.256))) - 273.1)
t = True
run = True

if t and not p:
Pressure = Find_Pressure(Temp)
p = True
run = True

if (p and t) and not d:
Density = Find_Density(Pressure, Temp)
d = True
run = True
if (d and t) and not p:
Pressure = (Density * 0.2869 * (Temp + 273.1))
p = True
run = True

if (d and p) and not t:
Temp = ((Pressure / Density * 0.2869) - 273.1)
t = True
run = True
return Alt, Temp, Pressure, Density
``````

I apricate any help/feedback, thanks in advance!