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!