I tried a make a calculator but it gives an error

Question:

Hi I’m new at the python and trying to make basic calculator, but when i try to start it gives a string is not int error, can u help me please?

def Add(number1, number2):
    return number1+number2
    
def Minus (number1, number2):
    return number1-number2
    
def Multiply (number1, number2):
    return number1*number2
    
def Divide (number1, number2):
    return number1/number2
    
print("Operation?")
print("1: Add")
print("2: Minus")
print("3: Multiply")
print("4: Divide")

operation= int(input("Please selecet an operation..."))
number1= int(input("Enter Number1"))
number2= int(input("Enter Number2"))

if operation==1:
    print("Answer= "+ int(number1+number2))
elif operation==2:
    print("Answer= "+ int(number1-number2))
elif operation==3:
    print("Answer= "+ int(number1*number2))
elif operatipn==4:
    print("Answer= "+ int(number1/number2))
else:
    print("You didn't choose anything in list")
Asked By: Muhammet AYDIN

||

Answers:

The problem here is that you are trying to add an int object to a str object in the print statements:

print("Answer= "+ int(number1-number2))

you just need to convert it to str not an int because the result of the – or + operations on int objects will be int:

print("Answer= "+ str(number1-number2))
Answered By: Bemwa Malak

Try using , instead of + :

def Add(number1, number2):
    return number1+number2
    
def Minus (number1, number2):
    return number1-number2
    
def Multiply (number1, number2):
    return number1*number2
    
def Divide (number1, number2):
    return number1/number2
    
print("Operation?")
print("1: Add")
print("2: Minus")
print("3: Multiply")
print("4: Divide")

operation= int(input("Please selecet an operation..."))
number1= int(input("Enter Number1"))
number2= int(input("Enter Number2"))

if operation==1:
    print("Answer= ", int(number1+number2))
elif operation==2:
    print("Answer= ", int(number1-number2))
elif operation==3:
    print("Answer= ", int(number1*number2))
elif operatipn==4:
    print("Answer= ", int(number1/number2))
else:
    print("You didn't choose anything in list")
Answered By: Battseren Badral

You can solve the above question in below following way as well without if condition

Dictionary is most powerful in this case when you don’t want to write 'N' number of times the if statements

First way :

def Add(number1, number2):
    return number1+number2
    
def Minus (number1, number2):
    return number1-number2
    
def Multiply (number1, number2):
    return number1*number2
    
def Divide (number1, number2):
    return number1/number2

number1 = int(input('Enter number 1 : '))
number2 = int(input('Enter number 2 : '))

myuserinput = int(input('Enter the option : '))

myoption = { 1 : Add(number1, number2) , 2 : Minus(number1, number2) , 3 : Multiply(number1, number2) , 4:Divide (number1, number2) } 


myoption.get(myuserinput,'Please provide proper input')

Second way :

def Add(number1, number2):
    result = number1 + number2 
    return 'Answer : {0}'.format(result)
    
def Minus (number1, number2):
    result = number1 - number2 
    return 'Answer : {0}'.format(result)
    
def Multiply (number1, number2):
    result = number1 * number2 
    return 'Answer : {0}'.format(result)
    
def Divide (number1, number2):
    result = number1 / number2 
    return 'Answer : {0}'.format(result)

number1 = int(input('Enter number 1 : '))
number2 = int(input('Enter number 2 : '))

myuserinput = int(input('Enter the option : '))

myoption = { 1 : Add(number1, number2) , 2 : Minus(number1, number2) , 3 : Multiply(number1, number2) , 4:Divide (number1, number2) } 


myoption.get(myuserinput,'Please provide proper input')
Answered By: codeholic24

With print you should type a coma "," instead of "+"

print("Answer= ", int(number1+number2))

Try it and see, if it doesn’t work then try removing int() from your prints!

 print("Answer= ", number1+number2)

Good luck!

Answered By: user20165318
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.