Python Forum

Full Version: BEGINNER: My calculator doesnt work
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi everyone,

I recently started learning how Python works and thought I would set up a simple calculator which asks for three inputs:

1. The first number
2. Operator
3. The second number

This is my code:

num1 = float(input ("Insert number: "))
operator = input ("What operation do you want to do: ")
num2 = float(input ("And the second number: "))

if operator == "+" or "Plus" or "plus":
    print(num1 + num2)
elif operator == "minus" or "Minus" or "-":
    print(num1 - num2)
elif operator == "Multiplication" or "multiplication" or "*":
    print(num1 * num2)
elif operator == "/" or "divide" or "Divide":
    print(num1 / num2)
else:
    print("Sorry, operator not identified, please try again: ")
It does not give a Syntax Error, but whenever I insert the two numbers along with an operator it only adds up the numbers. Example:

5
*
5
= 10.0

What am I doing wrong?

I really hope I am not filling up the forum with too simple stuff seeing what others are discussing in these forums. If that is the case please feel free to delete. I am just here to learn!

Kind regards
You never get past this comparison:

if operator == "+" or "Plus" or "plus":
It will be always True.

...and use link provided by buran.
(Oct-09-2019, 06:16 AM)buran Wrote: [ -> ]Just read https://python-forum.io/Thread-Multiple-...or-keyword

Thank you to both of you.
We live only once so one can use it to live at the edge and write something like that:

>>> import ast
>>> first = 21
>>> op = '*'
>>> second = 2
>>> exp = ast.parse(f'{first}{op}{second}', mode='eval')
>>> eval(compile(exp, '', mode='eval'))
42
@perfingo is not very explicit enough that eval() could be dangerous, so be careful when using it

as an alternative to avoid using huge if/elif/else block is to use operator module

from operator import add, mul, sub, truediv 
ops = {'+':add, 'plus':add, '-':sub, 'minus':sub,
       "multiplication":mul, "*":mul, "/":truediv, "divide":truediv}

num1 = float(input ("Insert number: "))
operator = input ("What operation do you want to do: ").lower()
num2 = float(input ("And the second number: "))

try:
    print(f'result: {ops[operator](num1, num2)}')
except KeyError:
    print("Sorry, operator not identified, please try again")
output(multiple runs)
Output:
Insert number: 5 What operation do you want to do: + And the second number: 4 result: 9.0
Output:
Insert number: 5 What operation do you want to do: minus And the second number: 3 result: 2.0
Output:
Insert number: 4 What operation do you want to do: % And the second number: 3 Sorry, operator not identified, please try again