How can you make Python take a polynomial as an input while maintaining the ability to substitute x for a real value?
Here is what I tried:
fx=input("Enter a Polynomial: ")
x=float(input("At which position should the polynomial be evaluated: "))
while True:
print(eval("fx"))
continue
The problem that arises is that Python will just evaluate fx as x and not as the value that I gave to x via my second input.
This should help:
def eval_polynomial(poly, val):
xs = [ x.strip().replace('^','**') for x in poly.split('+') ]
return sum( [eval(n.replace('x', str(val))) for n in xs] )
Please keep in mind that you earlier have to make sure val is a number for safety reasons.
EDIT: more self-descriptive version as asked by Dipen Bakraniya
def fix_power_sign(equation):
return equation.replace("^", "**")
def eval_polynomial(equation, x_value):
fixed_equation = fix_power_sign(equation.strip())
parts = fixed_equation.split("+")
x_str_value = str(x_value)
parts_with_values = (part.replace("x", x_str_value) for part in parts )
partial_values = (eval(part) for part in parts_with_values)
return sum(partial_values)