# --- 1. CÉREBRO DA CALCULADORA ---
# Dicionário onde a chave é o símbolo e o valor é a função
calc = {
"+": lambda a, b: a + b,
"-": lambda a, b: a - b,
"*": lambda a, b: a * b,
"/": lambda a, b: a / b if b != 0 else "Erro: Divisão por Zero"
}
# Nomes apenas para o menu
nomes = {"+": "Soma", "-": "Subtração", "*": "Multiplicação", "/": "Divisão"}
# --- 2. MENU E ESCOLHA ---
print("--- Calculadora ---")
for simbolo, nome in nomes.items():
print(f"{simbolo} : {nome}")
while True:
operacao = input("\nEscolha a operação: ")
if operacao in calc:
break
print("Opção inválida! Tente novamente.")
# --- 3. ENTRADA DE DADOS (Função Auxiliar) ---
def pedir_numero(msg):
while True:
try:
return float(input(msg))
except ValueError:
print("Entrada inválida. Digite apenas números.")
num1 = pedir_numero("Digite o primeiro número: ")
num2 = pedir_numero("Digite o segundo número: ")
# --- 4. CÁLCULO (Execução Direta) ---
# Acessa a lambda certa no dicionário e já executa com (num1, num2)
resultado = calc[operacao](num1, num2)
# --- 5. FORMATAÇÃO INTELIGENTE ---
# Se for float e terminar em .0, vira int. Se for texto (erro) ou decimal, mantém.
formatar = lambda n: int(n) if isinstance(n, float) and n.is_integer() else n
# --- 6. SAÍDA ---
print(f"\nResultado: {formatar(num1)} {operacao} {formatar(num2)} = {formatar(resultado)}")