

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()
But use correct channels dude. Make a Single post in relevant community on lemmy, mastodon, hackernews, heck even a reddit post. No shame in sharing your hardwork but respect community rules. Side note great project. I will star it.