Logster
Logster

Reputation: 19

Trying to make a calculator, but code isn't working. How to fix?

This program is supposed to be a calculator. When I run the program it prints operation as this

I'm not sure how to fix this. I have been trying to make a simple calculator that runs in terminal for a few days now but nothing seems to work. I think I need to re-define the operation var to print it. I'm not sure how to do that.

#The functions of this program #   
def add(num1, num2):
    return (num1 + num2)

def sub(num1,num2):
    return (num1 - num2)

def mul(num1, num2):
    return (num1 * num2)

def div(num1, num2):
    return (num1 / num2)

##The variables of this program ##
num1 = input ("Number 1: ")
num2 = input ("Number 2: ")
operation = input ("Operation: ")

###The if statements of this program ### 
if operation == "add":
      (num1 + num2)

elif operation == "sub":
      (num1 - num2)

elif operation == "mul":
      (num1 * num2)

elif operation == "div":
      (num1 / num2)

####The final code to print the product ####
print operation

Upvotes: 0

Views: 357

Answers (3)

Pooja Jhadhav
Pooja Jhadhav

Reputation: 49

Here is what you need .............

python 3 and the following code

Make sure you are using python3 and not python

e.g. root@Windows-Phone:~$ python3 anyName.py


#The functions of this program 
def add(num1, num2):
 return (num1 + num2)

def sub(num1,num2):
 return (num1 - num2)

def mul(num1, num2):
 return (num1 * num2)

def div(num1, num2):
 return (num1 / num2)

#The variables of this program
num1 = int(input ("Number 1: "))
num2 = int(input ("Number 2: "))
operation = input ("Operation: ")

#The if statements of this program 
if operation == "add":
  print(add(num1, num2))

if operation == "sub":
  print(sub(num1 ,num2))

if operation == "mul":
  print(mul(num1,num2))

if operation == "div":
  print(div(num1,num2))

Upvotes: 0

Djaouad
Djaouad

Reputation: 22776

There are some issues in your code:

  • You're not calling the functions you defined.
  • You're not printing the result, you're printing the operator (and not even correctly).
  • You're applying the operations on string not numbers (input returns a string).
  • Use raw_input instead of input in Python-2.x.

A solution:

#The functions of this program #   
def add(num1, num2):
    return (num1 + num2)

def sub(num1,num2):
    return (num1 - num2)

def mul(num1, num2):
    return (num1 * num2)

def div(num1, num2):
    return (num1 / num2)

##The variables of this program ##
num1 = float(raw_input("Number 1: "))   # convert the input to float
num2 = float(raw_input("Number 2: "))   # convert the input to float
operation = raw_input("Operation: ")

# The result variable, it holds an error message, in case the use inputs another operation
result='Unsupported operation'

###The if statements of this program ### 
if operation == "add":
      result = add(num1, num2)

elif operation == "sub":
      result = sub(num1, num2)

elif operation == "mul":
      result = mul(num1, num2)

elif operation == "div":
      result = div(num1, num2)

####The final code to print the product ####
print result

Upvotes: 0

Cory Kramer
Cory Kramer

Reputation: 117866

You didn't call your functions in your if statements

    if operation == "add":
          print(add(num1,  num2))

    elif operation == "sub":
          print(sub(num1, num2))

    elif operation == "mul":
          print(mul(num1, num2))

    elif operation == "div":
          print(div(num1,  num2))

Also note that you can use a dict to grab the function and evaluate it

ops = {'add': add,
       'sub': sub,
       'mul': mul,
       'div': div}

if operation in ops:
    print(ops[operation](num1, num2))
else:
    print('Invalid operator requested')

Upvotes: 1

Related Questions