Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[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)}")
1 resposta
solução!

Olá, Marinaldo, como vai?

Obrigado por compartilhar sua solução. A estrutura que você montou demonstra domínio do uso de funções lambda associadas a dicionários para roteamento de operações, que é exatamente a proposta do exercício. A separação em blocos lógicos também contribui para a legibilidade.

O código está consistente e funcional. As lambdas estão corretamente definidas e o acesso dinâmico via chave do dicionário foi aplicado de forma adequada. A validação de divisão por zero dentro da própria lambda é válida para o contexto e evita quebra de execução. A função auxiliar para entrada numérica com tratamento de exceção também foi uma boa adição.

Continue compartilhando suas soluções, pois isso contribui bastante para a troca no fórum.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!