Python Simple Calculator Example

A simple calculator is a great beginner Python project. It helps you practice several important basics in one small script:

  • getting user input
  • storing values in variables
  • converting text to numbers
  • using if, elif, and else
  • doing basic math
  • handling simple errors

In this example, you will build a calculator that asks for two numbers and an operator, then prints the result.

num1 = float(input("Enter first number: "))
operator = input("Enter operator (+, -, *, /): ")
num2 = float(input("Enter second number: "))

if operator == "+":
    print(num1 + num2)
elif operator == "-":
    print(num1 - num2)
elif operator == "*":
    print(num1 * num2)
elif operator == "/":
    if num2 == 0:
        print("Cannot divide by zero")
    else:
        print(num1 / num2)
else:
    print("Invalid operator")

Use this as the main working example. The rest of the page explains each part step by step.

What this example teaches #

This small project shows you how to:

  • get values from the user with input()
  • convert text input into numbers with float()
  • choose an action with if, elif, and else
  • perform +, -, *, and / operations
  • handle invalid operators and division by zero

What the calculator should do #

The calculator should:

  • ask for the first number
  • ask for the operator
  • ask for the second number
  • run the correct math operation
  • print the result or a clear error message

Step 1: Read user input #

The first part of the program gets values from the user.

num1 = float(input("Enter first number: "))
operator = input("Enter operator (+, -, *, /): ")
num2 = float(input("Enter second number: "))

Important idea: input() always returns text #

Even if the user types 12, Python reads it as a string, not a number.

That is why the code uses float() around the input() calls for num1 and num2.

  • input() gets the user’s typed value
  • float() converts that text into a number with decimals

For example:

value = input("Enter a number: ")
print(type(value))

Output:

<class 'str'>

After conversion:

value = float(input("Enter a number: "))
print(type(value))

Output:

<class 'float'>

If you want more practice with this, see how to get user input in Python and how to convert user input to numbers in Python.

Step 2: Check the operator #

Next, the program checks which operator the user typed.

if operator == "+":
    print(num1 + num2)
elif operator == "-":
    print(num1 - num2)
elif operator == "*":
    print(num1 * num2)
elif operator == "/":
    print(num1 / num2)
else:
    print("Invalid operator")

This works by comparing the operator variable to different strings.

  • if the user enters "+", the program adds
  • if the user enters "-", the program subtracts
  • if the user enters "*", the program multiplies
  • if the user enters "/", the program divides
  • anything else goes to else

The else part is useful for unsupported input such as:

  • %
  • ?
  • add

Step 3: Handle division safely #

Division needs one extra check.

If you try to divide by zero, Python raises an error. To avoid that, check num2 before dividing.

elif operator == "/":
    if num2 == 0:
        print("Cannot divide by zero")
    else:
        print(num1 / num2)

This makes the program friendlier for beginners and users.

Without the check, code like this would fail:

print(8 / 0)

That causes a ZeroDivisionError. If you want to understand that error in more detail, see ZeroDivisionError: division by zero fix.

Full calculator example #

Here is the full program again:

num1 = float(input("Enter first number: "))
operator = input("Enter operator (+, -, *, /): ")
num2 = float(input("Enter second number: "))

if operator == "+":
    print(num1 + num2)
elif operator == "-":
    print(num1 - num2)
elif operator == "*":
    print(num1 * num2)
elif operator == "/":
    if num2 == 0:
        print("Cannot divide by zero")
    else:
        print(num1 / num2)
else:
    print("Invalid operator")

How it works #

  • num1 stores the first number
  • operator stores the math symbol
  • num2 stores the second number
  • the if structure chooses the correct calculation
  • the result is printed to the screen

Expected output examples #

Here are some sample runs.

Example 1 #

Enter first number: 12
Enter operator (+, -, *, /): +
Enter second number: 3
15.0

Example 2 #

Enter first number: 10
Enter operator (+, -, *, /): /
Enter second number: 2
5.0

Example 3 #

Enter first number: 8
Enter operator (+, -, *, /): /
Enter second number: 0
Cannot divide by zero

Example 4 #

Enter first number: 4
Enter operator (+, -, *, /): ?
Enter second number: 2
Invalid operator

Beginner improvements #

Once this version works, you can improve it in small steps.

Try one of these:

  • round the result with round()
  • repeat the calculator in a loop
  • let users quit with q
  • use int() instead of float() if you only want whole numbers

For example, rounding the result:

num1 = float(input("Enter first number: "))
operator = input("Enter operator (+, -, *, /): ")
num2 = float(input("Enter second number: "))

if operator == "/":
    if num2 == 0:
        print("Cannot divide by zero")
    else:
        print(round(num1 / num2, 2))

This prints the division result rounded to 2 decimal places.

When this example is useful #

This project is useful:

  • as a first small Python project
  • to practice conditionals and input
  • to combine multiple beginner concepts in one script
  • to prepare for larger menu-based programs

It is a good next step after learning variables, input(), and basic if statements.

Common mistakes #

Beginners often run into the same problems when building this calculator.

Forgetting to convert input() values to numbers #

This is very common. If you skip float(), the values stay as strings.

Wrong:

num1 = input("Enter first number: ")
num2 = input("Enter second number: ")
print(num1 + num2)

If the user enters 2 and 3, this prints:

23

That happens because Python joins the strings instead of adding numbers.

Using = instead of == in an if statement #

Wrong:

if operator = "+":
    print(num1 + num2)

Use == when comparing values.

Correct:

if operator == "+":
    print(num1 + num2)

Not checking for division by zero #

If num2 is 0, division will fail unless you handle it first.

Typing an unsupported operator #

Your program only supports:

  • +
  • -
  • *
  • /

If the user types something else, the program should show Invalid operator.

Misspelling variable names #

For example, writing nub2 instead of num2 will cause errors or wrong behavior.

FAQ #

Why use float() instead of int()? #

float() allows decimal numbers like 2.5. int() only works for whole numbers.

Why does input() need conversion? #

input() returns a string. Math needs numbers, so convert with int() or float().

Why does division return a decimal? #

In Python, / returns a float result even when both numbers are whole numbers.

Can I make the calculator run again without restarting? #

Yes. Put the code inside a while loop and ask the user whether to continue.

See also #

If you want more practice, try building a second version of this calculator with a loop, better input validation, or extra operators.

Press Esc to close