0
respostas

[Sugestão] Faça como eu fiz: calculadora com lambda

# --- 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)}")