After the split x becomes (1 and z becomes 1). They can’t be converted to float. I think that’s why. Let me run the code.
Edit -
Also as you are returning a, b, c from splitter but Python functions return a single object. The a, b, c turns to a tuple. But you are using js syntax I think. So we have to unwrap inside the calculate function.
Now my original comment is not useful but you can try to introduce a conditional to check of the numbers x and z are actually numbers before converting to floats
# Ask user to enter an expression and display outputdefmain():
expression = input("Expression: ")
print(calculate (splitter (expression)))
# Split expression into components and assign to variables as float valuesdefsplitter (expression):
print(expression)
x, y, z = expression.split()
print(expression.split())
return x, y, z
# Calculate expression result# Changes Beginningdefcalculate(numbers):
x,y,z = numbers
# Changes End
x, z = float(x), float(z)
if y == "+":
returnstr(round((x + z), 1))
elif y == "-":
returnstr(round((xz), 1))
elif y == "*":
returnstr(round((x*z), 1))
else:
returnstr(round((x / z), 1))
main()
After the split x becomes (1 and z becomes 1). They can’t be converted to float. I think that’s why. Let me run the code. Edit - Also as you are returning a, b, c from splitter but Python functions return a single object. The a, b, c turns to a tuple. But you are using js syntax I think. So we have to unwrap inside the calculate function.
Now my original comment is not useful but you can try to introduce a conditional to check of the numbers x and z are actually numbers before converting to floats
# Ask user to enter an expression and display output def main(): expression = input("Expression: ") print(calculate (splitter (expression))) # Split expression into components and assign to variables as float values def splitter (expression): print(expression) x, y, z = expression.split() print(expression.split()) return x, y, z # Calculate expression result # Changes Beginning def calculate(numbers): x,y,z = numbers # Changes End x, z = float(x), float(z) if y == "+": return str(round((x + z), 1)) elif y == "-": return str(round((xz), 1)) elif y == "*": return str(round((x*z), 1)) else: return str(round((x / z), 1)) main()