Hello Everyone,

I just joined here hoping to increase my knowledge at python. I have been beginning to learn this language as of yesterday. I have decided that if I really want to increase my knowledge I should start on a project. Well here is my first project, a simple calculator. But for whatever reason when I run the program I'm getting some strange errors... Whatever help and advice you guys could give me would be most appreciated!

#Calculator Test1

print "Calculator:"
print "1)+" 
print "2)-" 
print "3)*" 
print "4)/" 
print " "
print "Select Choice:"
op = input(">")
print " "

#Add
if op == "1":
    print "a + b"
    add1 = input("a:")
    add2 = input("b:")
    print "a + b =", add1+add2

#Sub
if op == "2":
    print "a - b"
    sub1 = input("a:")
    sub2 = input("b:")
    print "a - b =", sub1-sub2

#Multi
if op == "3":
    print "a * b"
    mul1 = input("a:")
    mul2 = input("b:")
    print "a * b =", mul1*mul2

#Div
if op == "4":
    print "a / b"
    div1 = input("a:")
    div2 = input("b:")
    print "a / b =", div1/div2

Thanks,
Inkcoder

THe line:

op = input(">")

Takes the input AND evaluates it. That means inputing "1" results in eval("1") which is int("1').
Putting in something like "a" results in the interpreter looking for a name "a" and not finding it.

For the beginning I recommend to use:

op=raw_input(">")
Comments
nice help

First, welcome to the forum!

What 'slate' is really telling you is that input() is for numbers and raw_input() is for strings. Using input() has certain risks since you can also enter a command and it will excute it.

Anyway, if you want to use
op = input(">")
then op will not be a string
and you have to use this if statement
if op == 1:

In the matter of fact, input() allows you to create this very simple calculator, since it evaluates mathematical expressions directly:

print "At the >> prompt enter x op y"
print "where x and y are numbers and op is"
print "-  +  /  *  **  //  for instance 12 * 9"
result = input(">> ")
print "result =", result
This article has been dead for over six months. Start a new discussion instead.