Calculadora em Python: código, funções e validação

Atualizado em: 20/08/2026
Tempo de leitura: 4 minutos
Foto de uma pessoa usando uma calculadora

Aprender como fazer uma calculadora em Python é uma ótima forma de praticar entrada de dados, operadores, funções, condicionais, laços e tratamento de erros. Neste guia, você começa com um código completo e funcional e, depois, entende cada parte para poder adaptar o projeto.

Como fazer uma calculadora em Python

Copie o código abaixo, salve-o em um arquivo chamado calculadora.py e execute com python calculadora.py.

def somar(a, b):
    return a + b


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


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


def dividir(a, b):
    if b == 0:
        raise ValueError("Não é possível dividir por zero.")
    return a / b


operacoes = {
    "1": ("Adição", somar),
    "2": ("Subtração", subtrair),
    "3": ("Multiplicação", multiplicar),
    "4": ("Divisão", dividir),
}

while True:
    print("\nCALCULADORA EM PYTHON")
    for codigo, (nome, _) in operacoes.items():
        print(f"{codigo} - {nome}")
    print("0 - Sair")

    escolha = input("Escolha uma opção: ").strip()

    if escolha == "0":
        print("Calculadora encerrada.")
        break

    if escolha not in operacoes:
        print("Opção inválida.")
        continue

    try:
        numero_1 = float(input("Digite o primeiro número: "))
        numero_2 = float(input("Digite o segundo número: "))
        nome, funcao = operacoes[escolha]
        resultado = funcao(numero_1, numero_2)
        print(f"{nome}: {resultado:g}")
    except ValueError as erro:
        print(f"Erro: {erro}")

Esse programa oferece as quatro operações básicas, impede divisão por zero, rejeita opções inexistentes e continua funcionando até que o usuário escolha sair.

Como o código funciona

1. Funções para cada operação

As funções somar(), subtrair(), multiplicar() e dividir() recebem dois números e devolvem o resultado. Separar as operações em funções deixa o código mais fácil de testar, reutilizar e ampliar.

2. Dicionário de operações

O dicionário operacoes relaciona cada opção do menu a um nome e a uma função. Assim, não é necessário criar uma cadeia longa de if e elif.

3. Entrada e conversão de números

A função input() sempre retorna texto. Por isso, o programa converte a entrada para float, permitindo trabalhar tanto com inteiros quanto com números decimais.

4. Tratamento de erros

O bloco try/except evita que a calculadora seja encerrada quando o usuário digita texto no lugar de um número ou tenta dividir por zero. Em vez de quebrar, o programa mostra uma mensagem clara e volta ao menu.

Versão simples para iniciantes

Para estudar apenas entrada de dados e operadores, você pode começar com uma versão menor:

numero_1 = float(input("Primeiro número: "))
numero_2 = float(input("Segundo número: "))
operacao = input("Operação (+, -, * ou /): ").strip()

if operacao == "+":
    resultado = numero_1 + numero_2
elif operacao == "-":
    resultado = numero_1 - numero_2
elif operacao == "*":
    resultado = numero_1 * numero_2
elif operacao == "/":
    if numero_2 == 0:
        resultado = "não é possível dividir por zero"
    else:
        resultado = numero_1 / numero_2
else:
    resultado = "operação inválida"

print(f"Resultado: {resultado}")

Essa versão é curta e didática. Quando ela estiver clara, avance para a primeira implementação, que usa funções, repetição e tratamento de exceções.

Calculadora com interface gráfica usando Tkinter

Depois da versão no terminal, você pode criar uma janela com botões e campos de texto usando o Tkinter, biblioteca gráfica incluída na maioria das instalações do Python.

import tkinter as tk
from tkinter import messagebox


def calcular():
    try:
        a = float(entrada_1.get())
        b = float(entrada_2.get())
        operacao = operador.get()

        if operacao == "+":
            resultado = a + b
        elif operacao == "-":
            resultado = a - b
        elif operacao == "*":
            resultado = a * b
        elif operacao == "/":
            if b == 0:
                raise ValueError("Não é possível dividir por zero.")
            resultado = a / b
        else:
            raise ValueError("Escolha uma operação válida.")

        texto_resultado.config(text=f"Resultado: {resultado:g}")
    except ValueError as erro:
        messagebox.showerror("Erro", str(erro))


janela = tk.Tk()
janela.title("Calculadora em Python")
janela.resizable(False, False)

entrada_1 = tk.Entry(janela)
entrada_1.grid(row=0, column=0, padx=8, pady=8)

operador = tk.StringVar(value="+")
tk.OptionMenu(janela, operador, "+", "-", "*", "/").grid(row=0, column=1)

entrada_2 = tk.Entry(janela)
entrada_2.grid(row=0, column=2, padx=8, pady=8)

tk.Button(janela, text="Calcular", command=calcular).grid(
    row=1, column=0, columnspan=3, pady=8
)

texto_resultado = tk.Label(janela, text="Resultado: ")
texto_resultado.grid(row=2, column=0, columnspan=3, pady=8)

janela.mainloop()

Veja o guia completo de Tkinter e interfaces gráficas em Python para entender janelas, widgets, eventos e organização do layout.

Erros comuns ao criar a calculadora

  • Esquecer de converter o input: sem int() ou float(), o Python trata os valores como texto.
  • Não validar a divisão por zero: essa operação gera erro e deve ser verificada.
  • Usar muitos blocos condicionais repetidos: funções e dicionários deixam o programa mais organizado.
  • Não tratar entradas inválidas: um try/except evita encerramentos inesperados.
  • Misturar interface e lógica: mantenha os cálculos em funções independentes sempre que possível.

Ideias para evoluir o projeto

  1. Adicionar potência, raiz quadrada, porcentagem e módulo.
  2. Guardar um histórico dos cálculos realizados.
  3. Criar testes automatizados para cada função.
  4. Separar o projeto em arquivos, como operacoes.py e app.py.
  5. Transformar a calculadora em uma aplicação gráfica mais completa.
https://youtu.be/3mJf4Pe0wos

Perguntas frequentes

Qual tipo numérico devo usar?

Use int quando aceitar somente números inteiros e float quando a calculadora precisar trabalhar com casas decimais.

Como impedir que o programa feche após um cálculo?

Coloque o menu dentro de um laço while e use break apenas quando o usuário selecionar a opção de sair.

Por que usar funções?

Funções reduzem repetição, facilitam testes e permitem incluir novas operações sem reescrever o programa inteiro.

É possível criar uma calculadora científica?

Sim. O módulo math oferece funções como raiz quadrada, seno, cosseno e logaritmo.

Conclusão

Uma calculadora em Python é um projeto pequeno, mas reúne conceitos fundamentais da linguagem. Comece pela versão simples, avance para funções e tratamento de erros e, por fim, experimente uma interface com Tkinter. Esse caminho transforma um exercício básico em um projeto bem estruturado para o seu portfólio.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Pesquisa em documentos PDF com Python e RAG
    Projetos
    Foto de perfil de Leandro Hirt da Academify

    Chatbot com PDFs e RAG em Python

    Aprenda a criar um chatbot com PDFs e RAG em Python, usando busca semântica para encontrar trechos e responder com

    Ler mais

    Tempo de leitura: 6 minutos
    23/07/2026
    Landing page simples criada com Python e Tailwind CSS
    Projetos
    Foto de perfil de Leandro Hirt da Academify

    Landing page com Python, Flask e Tailwind CSS

    Você já sentiu a necessidade de colocar uma ideia no ar rapidamente, mas se viu travado na complexidade do desenvolvimento

    Ler mais

    Tempo de leitura: 11 minutos
    19/04/2026
    Sistema de tradução automática desenvolvido com Python
    Projetos
    Foto de perfil de Leandro Hirt da Academify

    Tradução automática com Python: textos e idiomas

    Criar um sistema de tradução automática com Python é uma das formas mais fascinantes de entrar no mundo da Inteligência

    Ler mais

    Tempo de leitura: 10 minutos
    17/04/2026
    Sistema de lembretes e alarmes desenvolvido com Python
    Projetos
    Foto de perfil de Leandro Hirt da Academify

    Lembretes com alarme no Python: datetime e som

    Criar um sistema de lembretes com alarme em Python é um dos projetos mais gratificantes para quem está dando os

    Ler mais

    Tempo de leitura: 10 minutos
    10/04/2026
    Extração de dados de tabelas de sites usando Python e pandas
    Projetos
    Foto de perfil de Leandro Hirt da Academify

    Tabelas web com Python e Pandas: extração de dados

    Você já se deparou com um site repleto de informações úteis organizadas em tabelas, mas sentiu que copiar e colar

    Ler mais

    Tempo de leitura: 10 minutos
    09/04/2026
    Conversão de áudio para texto usando Python gratuitamente
    Projetos
    Foto de perfil de Leandro Hirt da Academify

    Áudio para texto no Python: Whisper e SpeechRecognition

    Transformar arquivos de áudio em texto é uma das tarefas mais úteis e requisitadas na era da inteligência artificial e

    Ler mais

    Tempo de leitura: 10 minutos
    08/04/2026