Programador Leigo
Projetos 7 min leitura 16 MAR 2026

Como fazer uma calculadora em Python

Construa uma calculadora com menu de operações no terminal usando funções e loops.


O que vamos construir?

Uma calculadora que roda no terminal com um menu de operações. O usuário escolhe a operação, digita dois números e recebe o resultado. A calculadora continua rodando até o usuário decidir sair.

As quatro operações básicas

Vamos começar criando uma função para cada operação:

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:
        return "Erro: divisao por zero!"
    return a / b

Na divisão, verificamos se o divisor é zero antes de calcular. Dividir por zero causaria um erro no Python.

Criando o menu

O menu mostra as opções disponíveis e pede a escolha do usuário:

def mostrar_menu():
    print()
    print("=== CALCULADORA PYTHON ===")
    print("1. Somar")
    print("2. Subtrair")
    print("3. Multiplicar")
    print("4. Dividir")
    print("5. Sair")
    print()

Pedindo os números

Uma função que pede dois números e trata entradas inválidas:

def pedir_numeros():
    while True:
        try:
            a = float(input("Primeiro numero: "))
            b = float(input("Segundo numero: "))
            return a, b
        except ValueError:
            print("Entrada invalida. Digite apenas numeros.")

Usamos float() em vez de int() para aceitar números decimais como 3.14 ou 0.5.

O loop principal

Agora juntamos tudo em um loop que mantém a calculadora rodando:

def calculadora():
    operacoes = {
        "1": ("Soma", somar),
        "2": ("Subtracao", subtrair),
        "3": ("Multiplicacao", multiplicar),
        "4": ("Divisao", dividir),
    }

    print("Bem-vindo a Calculadora Python!")

    while True:
        mostrar_menu()
        escolha = input("Escolha uma opcao: ").strip()

        if escolha == "5":
            print("Ate mais!")
            break

        if escolha not in operacoes:
            print("Opcao invalida. Tente novamente.")
            continue

        nome, funcao = operacoes[escolha]
        a, b = pedir_numeros()
        resultado = funcao(a, b)

        print(f"\n{nome}: {a} e {b} = {resultado}")

O truque aqui é o dicionário operacoes: ele mapeia a escolha do usuário para o nome e a função correspondente. Isso evita uma cadeia longa de if/elif.

Código completo

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:
        return "Erro: divisao por zero!"
    return a / b


def mostrar_menu():
    print()
    print("=== CALCULADORA PYTHON ===")
    print("1. Somar")
    print("2. Subtrair")
    print("3. Multiplicar")
    print("4. Dividir")
    print("5. Sair")
    print()


def pedir_numeros():
    while True:
        try:
            a = float(input("Primeiro numero: "))
            b = float(input("Segundo numero: "))
            return a, b
        except ValueError:
            print("Entrada invalida. Digite apenas numeros.")


def calculadora():
    operacoes = {
        "1": ("Soma", somar),
        "2": ("Subtracao", subtrair),
        "3": ("Multiplicacao", multiplicar),
        "4": ("Divisao", dividir),
    }

    print("Bem-vindo a Calculadora Python!")

    while True:
        mostrar_menu()
        escolha = input("Escolha uma opcao: ").strip()

        if escolha == "5":
            print("Ate mais!")
            break

        if escolha not in operacoes:
            print("Opcao invalida. Tente novamente.")
            continue

        nome, funcao = operacoes[escolha]
        a, b = pedir_numeros()
        resultado = funcao(a, b)

        print(f"\n{nome}: {a} e {b} = {resultado}")


calculadora()

O que você aprendeu

  • Funções que recebem parâmetros e retornam valores
  • Dicionário mapeando strings para funções (um padrão muito útil)
  • Loop infinito controlado com break e continue
  • Tratamento de erros com try/except

Dicas para ir além

  • Mais operações: potência (**), resto da divisão (%), raiz quadrada (math.sqrt)
  • Histórico: salvar os cálculos em uma lista e exibir ao final
  • Formatação: arredondar resultados com round(resultado, 2)

Conclusão

A calculadora é um projeto simples, mas ensina um padrão poderoso: usar dicionários para mapear escolhas a ações. Esse mesmo padrão aparece em projetos profissionais. No próximo artigo, vamos criar um gerador de senhas seguras.

Continue lendo

Compartilhar