how to make calculator in python

Interactive Calculator Demo

Use this mini calculator to test operations. Under it, you will see the equivalent Python line.

Result will appear here.
# Python equivalent:
result = a + b

If you are learning Python, building a calculator is one of the best beginner projects. It teaches input handling, conditionals, loops, functions, and error checking—all in one practical script.

What You Will Build

There are three common ways to create a calculator in Python:

  • Console calculator (terminal-based, easiest start)
  • Function-based calculator (cleaner, reusable code)
  • GUI calculator with Tkinter (button interface)

Start with the console version first. Once that works, improve it with validation and then move to GUI.

Step 1: Build a Basic Console Calculator

Simple version

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

if op == "+":
    print("Result:", num1 + num2)
elif op == "-":
    print("Result:", num1 - num2)
elif op == "*":
    print("Result:", num1 * num2)
elif op == "/":
    if num2 != 0:
        print("Result:", num1 / num2)
    else:
        print("Error: Division by zero is not allowed.")
else:
    print("Invalid operator")

This works, but only for one calculation. A better calculator should continue running until the user decides to exit.

Step 2: Add a Loop and Error Handling

The script below keeps asking for input and handles common mistakes like invalid numbers and divide-by-zero.

while True:
    print("\n--- Python Calculator ---")
    print("Type 'q' at any number prompt to quit.")

    first = input("Enter first number: ")
    if first.lower() == "q":
        print("Goodbye!")
        break

    second = input("Enter second number: ")
    if second.lower() == "q":
        print("Goodbye!")
        break

    op = input("Enter operator (+, -, *, /, %, **): ")

    try:
        num1 = float(first)
        num2 = float(second)

        if op == "+":
            result = num1 + num2
        elif op == "-":
            result = num1 - num2
        elif op == "*":
            result = num1 * num2
        elif op == "/":
            if num2 == 0:
                print("Error: division by zero.")
                continue
            result = num1 / num2
        elif op == "%":
            if num2 == 0:
                print("Error: modulus by zero.")
                continue
            result = num1 % num2
        elif op == "**":
            result = num1 ** num2
        else:
            print("Invalid operator.")
            continue

        print(f"Result: {result}")

    except ValueError:
        print("Please enter valid numbers.")

Step 3: Make It Cleaner with Functions

As your script grows, functions keep your code readable and easier to test.

def calculate(num1, num2, op):
    if op == "+":
        return num1 + num2
    if op == "-":
        return num1 - num2
    if op == "*":
        return num1 * num2
    if op == "/":
        if num2 == 0:
            raise ZeroDivisionError("Cannot divide by zero")
        return num1 / num2
    if op == "%":
        if num2 == 0:
            raise ZeroDivisionError("Cannot do modulus by zero")
        return num1 % num2
    if op == "**":
        return num1 ** num2
    raise ValueError("Unsupported operator")

def main():
    print("Function-based calculator")
    while True:
        raw = input("\nEnter expression like 10 * 3 (or 'quit'): ").strip()
        if raw.lower() == "quit":
            break

        parts = raw.split()
        if len(parts) != 3:
            print("Format error. Use: number operator number")
            continue

        a, op, b = parts
        try:
            num1 = float(a)
            num2 = float(b)
            result = calculate(num1, num2, op)
            print("=", result)
        except Exception as e:
            print("Error:", e)

if __name__ == "__main__":
    main()

Step 4: Build a GUI Calculator with Tkinter

Once the logic is done, GUI is the next step. Tkinter comes built into Python, so no extra install is needed.

import tkinter as tk

def on_click(value):
    current = entry_var.get()
    entry_var.set(current + value)

def evaluate():
    try:
        result = eval(entry_var.get())
        entry_var.set(str(result))
    except Exception:
        entry_var.set("Error")

def clear():
    entry_var.set("")

root = tk.Tk()
root.title("Python Calculator")

entry_var = tk.StringVar()
entry = tk.Entry(root, textvariable=entry_var, font=("Arial", 18), justify="right")
entry.grid(row=0, column=0, columnspan=4, sticky="nsew")

buttons = [
    "7","8","9","/",
    "4","5","6","*",
    "1","2","3","-",
    "0",".","=","+"
]

r, c = 1, 0
for b in buttons:
    action = (lambda x=b: evaluate()) if b == "=" else (lambda x=b: on_click(x))
    tk.Button(root, text=b, command=action, width=5, height=2).grid(row=r, column=c, sticky="nsew")
    c += 1
    if c > 3:
        c = 0
        r += 1

tk.Button(root, text="C", command=clear).grid(row=r, column=0, columnspan=4, sticky="nsew")

root.mainloop()

Important Tips for a Better Calculator

  • Validate user input every time.
  • Handle division by zero explicitly.
  • Use functions to avoid repeated code.
  • Avoid raw eval() with untrusted input in real apps.
  • Add tests for your calculation function.

Common Mistakes Beginners Make

1) Converting input too late or not at all

input() returns text. Convert to float or int before math.

2) Forgetting to check divide-by-zero

Always check num2 == 0 for / and %.

3) Writing everything in one huge block

Split into functions like calculate(), get_input(), and main().

Practice Challenges

  • Add square root and absolute value.
  • Store calculation history in a list.
  • Export history to a text file.
  • Convert your console calculator into a class (Calculator).
  • Create a dark-mode Tkinter UI.

Final Thoughts

Learning how to make a calculator in Python is a strong foundation project. It teaches core programming concepts while giving immediate feedback. Start simple, improve one feature at a time, and then build a GUI version. By the end, you will understand control flow, functions, exceptions, and user interaction in Python much better.

đź”— Related Calculators