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

Updated 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:

Bash
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

    Projeto clássico do jogo Pong desenvolvido com Python
    Projects
    Foto de perfil de Leandro Hirt da Academify

    Build Your First Pong Game with Python

    Build your first Pong game with Python and the Turtle module: window setup, paddles, ball physics, collision detection, scoreboard, and

    Ler mais

    Tempo de leitura: 7 minutos
    03/06/2026
    Geração automática de QR Code usando Python
    Projects
    Foto de perfil de Leandro Hirt da Academify

    Generate QR Codes with Python in Minutes

    Learn how to generate QR codes with Python using the qrcode library: simple codes, customized colors, batch generation with loops,

    Ler mais

    Tempo de leitura: 3 minutos
    01/06/2026
    Gerenciador de senhas simples desenvolvido com Python
    Projects
    Foto de perfil de Leandro Hirt da Academify

    Build a Simple Password Manager in Python

    Build a simple Python password manager with Fernet encryption, file storage, password generation using secrets, and an interactive terminal menu.

    Ler mais

    Tempo de leitura: 4 minutos
    30/05/2026
    Conversor de moedas desenvolvido com Python
    Projects
    Foto de perfil de Leandro Hirt da Academify

    Build a Python Currency Converter Step by Step

    Build a Python currency converter step by step using the requests library and a real exchange rate API, with user

    Ler mais

    Tempo de leitura: 4 minutos
    29/05/2026
    Calendário mensal gerado automaticamente com Python
    Projects
    Foto de perfil de Leandro Hirt da Academify

    Generate a Monthly Calendar in Python in 2 Minutes

    Generate a monthly calendar in Python in 2 minutes using the built-in calendar module, with user input, Sunday start, file

    Ler mais

    Tempo de leitura: 4 minutos
    29/05/2026
    Sistema de login simples desenvolvido com Python
    Projects
    Foto de perfil de Leandro Hirt da Academify

    Simple Python Login System with TXT Files

    Learn how to build a simple Python login system using TXT files, with user registration, password validation, error handling, and

    Ler mais

    Tempo de leitura: 5 minutos
    29/05/2026