I tried to code a simple calculator but as a beginner I don't know how to actually convert my input strings into float or int. I want the output to be integer when it is 2 but not 2.0 while the output to be 2.5 when its a float. But I coded this and entered 1 + 1 I still get 2.0
from ast import literal_eval
# User input a simple calculation
num1, operator, num2 = input('Please enter a simple math calculation ').split()
num1 = float(num1)
num2 = float(num2)
# Convert string into either int or float
def convertString1 (num1):
val = literal_eval(num1)
return isinstance(val, int) or (isinstance(val, float) and val.is_integer())
def convertString2 (num2):
val = literal_eval(num2)
return isinstance(val, int) or (isinstance(val, float) and val.is_integer())
# Condition to perform calculation and output
if operator == "+" :
print("{} + {} = {}".format(num1, num2, num1+num2))
elif operator == "-" :
print("{} - {} = {}".format(num1, num2, num1-num2))
elif operator == "*" :
print("{} * {} = {}".format(num1, num2, num1*num2))
elif operator == "/" :
print("{} / {} = {}".format(num1, num2, num1/num2))
else :
print("Syntax error")
num1 = float(num1) num2 = float(num2). Also functions don't call themselves, you have to do thatliteral_evalto parse1as an int but1.0as a float.