How to Build a Calculator in Python: Step-by-Step

Published on: May 7, 2026
Reading time: 9 minutes
Foto de uma pessoa usando uma calculadora


Building a calculator in Python is one of the best first projects for anyone learning to code. It is practical, fun, and teaches you core programming concepts all at once. By the end of this guide, you will have a fully working Python calculator that runs in your terminal.

No prior experience is needed. Just follow along step by step.

What You Will Learn in This Project

Before writing any code, it helps to understand what skills this project covers:

These are fundamental skills you will use in almost every Python project.

Setting Up Your Environment

First, make sure Python is installed on your computer. If it is not, check out this guide on how to install Python before moving forward.

You can write your code in any text editor. However, a proper code editor makes your life much easier. If you are just starting out, VS Code is a great free option.

Create a new file called calculator.py. That is where all your code will go.

Step 1: Define the Math Functions

The first thing to do is create separate functions for each math operation. A function is a reusable block of code that performs a specific task.

Python
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

def divide(a, b):
    if b == 0:
        return "Error: Cannot divide by zero."
    return a / b

Each function takes two numbers and returns the result. Notice the divide function checks if the second number is zero. Dividing by zero is a math error, so the program returns a message instead of crashing.

Tip: The return statement sends the result back to wherever the function was called. Learn more about how return works in Python.

Step 2: Display the Menu

Next, show the user a list of available operations. This makes the calculator easy to use.

Python
def show_menu():
    print("Select an operation:")
    print("1. Addition")
    print("2. Subtraction")
    print("3. Multiplication")
    print("4. Division")
    print("5. Exit")

This function simply prints options to the screen. The user will type a number to choose what they want to do.

Step 3: Get Input from the User

Now you need to ask the user for numbers. Use Python’s built-in input() function for that.

Python
def get_number(prompt):
    while True:
        try:
            return float(input(prompt))
        except ValueError:
            print("Invalid input. Please enter a number.")

This function uses a while loop to keep asking until the user types a valid number. The try/except block catches errors if the user types something that is not a number, like a letter.

Important: Using float() instead of int() allows decimal numbers, making your calculator more flexible.

Step 4: Build the Main Logic

This is the core of the calculator. It ties everything together using an if/elif block.

Python
def main():
    print("Welcome to the Python Calculator!")
    
    while True:
        show_menu()
        choice = input("Enter your choice (1-5): ")
        
        if choice == "5":
            print("Goodbye!")
            break
        
        if choice in ("1", "2", "3", "4"):
            num1 = get_number("Enter the first number: ")
            num2 = get_number("Enter the second number: ")
            
            if choice == "1":
                print(f"Result: {add(num1, num2)}")
            elif choice == "2":
                print(f"Result: {subtract(num1, num2)}")
            elif choice == "3":
                print(f"Result: {multiply(num1, num2)}")
            elif choice == "4":
                print(f"Result: {divide(num1, num2)}")
        else:
            print("Invalid choice. Please try again.")

The while True loop keeps the calculator running until the user chooses to exit. Each choice calls the matching function and prints the result.

The f"Result: {…}" syntax is called an f-string. It is a clean way to insert values into a string. You can learn more about how f-strings work if you want to format the output with currency or decimal places.

Step 5: Run the Program

Add this at the very bottom of your file:

Python
if __name__ == "__main__":
    main()

This line tells Python to run the main() function only when you execute the file directly. It is a best practice that every Python project should follow.

To run the program, open your terminal and type:

python calculator.py

You should see the menu appear and be able to perform calculations right away.

Complete Code in One Place

Here is the full calculator code from start to finish:

Python
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

def divide(a, b):
    if b == 0:
        return "Error: Cannot divide by zero."
    return a / b

def show_menu():
    print("Select an operation:")
    print("1. Addition")
    print("2. Subtraction")
    print("3. Multiplication")
    print("4. Division")
    print("5. Exit")

def get_number(prompt):
    while True:
        try:
            return float(input(prompt))
        except ValueError:
            print("Invalid input. Please enter a number.")

def main():
    print("Welcome to the Python Calculator!")
    
    while True:
        show_menu()
        choice = input("Enter your choice (1-5): ")
        
        if choice == "5":
            print("Goodbye!")
            break
        
        if choice in ("1", "2", "3", "4"):
            num1 = get_number("Enter the first number: ")
            num2 = get_number("Enter the second number: ")
            
            if choice == "1":
                print(f"Result: {add(num1, num2)}")
            elif choice == "2":
                print(f"Result: {subtract(num1, num2)}")
            elif choice == "3":
                print(f"Result: {multiply(num1, num2)}")
            elif choice == "4":
                print(f"Result: {divide(num1, num2)}")
        else:
            print("Invalid choice. Please try again.")

if __name__ == "__main__":
    main()

Copy this, paste it into your calculator.py file, and run it.

How to Handle Common Errors

New programmers often run into a few issues with this project. Here is a quick reference:

ProblemCauseFix
Program crashes on lettersNo input validationUse try/except with ValueError
Division by zero errorNo zero checkAdd if b == 0 inside divide function
Loop runs foreverNo exit conditionAdd the break for choice “5”
Decimal results look oddUsing int()Switch to float()

Understanding common Python errors early will save you a lot of frustration as you build more complex projects.

Ways to Improve Your Calculator

Once your basic calculator works, try adding these features:

  • Power/exponent operation using ** (e.g., 2 ** 3 equals 8)
  • Square root using Python’s built-in math module
  • History log that saves all previous calculations to a .txt file
  • Repeat last operation button for convenience

Each of these additions will push your Python skills further. For example, saving a history log would teach you how to read and write .txt files in Python.

According to the official Python documentation, practicing small projects like this one is one of the most effective ways to reinforce core language concepts.

Why This Project Matters for Beginners

A calculator project might seem simple, but it covers a surprising amount of ground. You practice functions, loops, conditionals, input handling, and error management all in one place.

Many experienced developers recommend this as a starting point precisely because it is manageable and rewarding. Sites like Real Python also highlight operator-based projects as ideal for building confidence early.

Once you finish this project, you will be ready for bigger challenges. For example, you could explore logic and programming fundamentals or try building a number guessing game as your next step.

Keep writing code every day, even if it is just a few lines. Progress compounds quickly.


Frequently Asked Questions (FAQ)

1. What is a Python calculator? It is a program written in Python that takes two numbers and an operation from the user, then returns the result in the terminal.

2. Do I need to install anything extra to build this calculator? No. This project uses only Python’s built-in features. No external libraries are needed.

3. What Python version should I use? Use Python 3.6 or newer. Older versions do not support f-strings, which are used in this tutorial.

4. Why does my program crash when I type a letter? You are missing input validation. Wrap your input() inside a try/except ValueError block to handle non-numeric input.

5. Can I add more operations to this calculator? Yes. Just create a new function (like power(a, b)) and add a new menu option and elif condition for it.

6. How do I save the calculation results to a file? Use Python’s built-in open() function with write mode ("a" for append) to log each result to a .txt file.

7. What is the difference between int() and float() for input? int() accepts only whole numbers. float() accepts decimals too. Use float() for a more flexible calculator.

8. Why do I need if __name__ == "__main__"? It ensures the main() function only runs when you execute the file directly, not when it is imported as a module.

9. Can I build a calculator with a graphical interface? Yes. Once you know the basics, you can use Tkinter to add buttons and a visual display to your calculator.

10. What should I build after finishing this calculator? Try a number guessing game, a to-do list app, or a simple quiz. These projects build on the same skills you just practiced.


Share:

Facebook
WhatsApp
Twitter
LinkedIn

Article content

    Related articles

    cubos alinhados, um com cada letra, formando a palavra 'Python'
    Fundamentals
    Foto do Leandro Hirt

    What Is Python? A Complete Guide for Beginners

    If you’ve ever searched for a programming language to learn, Python probably appeared on every list you found. And for

    Ler mais

    Tempo de leitura: 11 minutos
    06/05/2026
    Mão segurando um papel com no formato do logo do Python em um fundo roxo-escuro
    Fundamentals
    Foto do Leandro Hirt

    How to Learn Python from Scratch in 2026

    Thinking about learning Python in 2026? You are making a great choice. Python is one of the most popular programming

    Ler mais

    Tempo de leitura: 10 minutos
    06/05/2026
    Ilustração de automação usando Python
    Automation and Scripts
    Foto do Leandro Hirt

    20 Ready-to-Use Python Scripts for Automation

    If you spend time doing the same tasks on your computer every day, Python scripts for automation can save you

    Ler mais

    Tempo de leitura: 13 minutos
    06/05/2026
    Programador pensnado em frente à vários monitores com código na tela
    Fundamentals
    Foto do Leandro Hirt

    15 Python Exercises for Beginners with Complete Solutions

    Learning to program is like learning a new language. You need to practice every day to improve. Python is one

    Ler mais

    Tempo de leitura: 4 minutos
    06/05/2026
    Automation and Scripts
    Foto do Leandro Hirt

    How to compare two lists in Python and find the differences

    Comparing data is one of the most common and essential tasks in a programmer’s day-to-day work. Whether you are synchronizing

    Ler mais

    Tempo de leitura: 10 minutos
    06/05/2026