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
breakecontinue - 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.