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

[Sugestão] Sugestão "calculadora com lambda"

import time
import os

# Variáveis para as operações matemáticas
soma = lambda x, y: x + y
subtracao = lambda x, y: x - y
multiplicacao = lambda x, y: x * y
divisao = lambda x, y: x / y 
# ----------------------------------------

# Função para exibir o menu da calculadora e realizar as operações
def menu_calculadora():
    opcoes_menu = (1, 2, 3, 4, 5)
    while True:
        menu = ('''Calculadora
            1 - Soma
            2 - Subtração
            3 - Multiplicação
            4 - Divisão
            5 - Sair''')
        linhas = (menu.split("\n"))
        for i in linhas:
            print(i.strip())
        print("\n" + "-" * 30)
        
        # Condições de escolhas do menu
        try:
            opcao = int(input("Escolha uma opção: "))
            if opcao not in opcoes_menu:
                raise ValueError("Opção inválida.")
            
            x = float(input("Digite o primeiro número: "))
            y = float(input("Digite o segundo número: "))
            
            if opcao == 1:
                resultado = soma(x, y)
            elif opcao == 2:
                resultado = subtracao(x, y)
            elif opcao == 3:
                resultado = multiplicacao(x, y)
            elif opcao == 4:
                if y == 0:
                    raise ZeroDivisionError("Divisão por zero não é permitida.")
                resultado = divisao(x, y)
            elif opcao == 5:
                print("Saindo da calculadora...")
                break
            
            print(f"\nResultado: {resultado}")
            time.sleep(2)
            limpar_tela()
            
        # Tratamento de exceções de entrada inválida e divisão por zero
        except ValueError as e:
            limpar_tela()
            print(f"Erro: {e}, tente novamente.")
            time.sleep(2)
            limpar_tela()
            continue
        
        except ZeroDivisionError as e:
            limpar_tela()
            print(f"\nErro: {e}")
            time.sleep(2)
            limpar_tela()
            continue

def limpar_tela():
    if os.name == 'nt':  # Windows
        os.system('cls')
    else:  # Linux, macOS
        os.system('clear')
    

if __name__ == "__main__":
    menu_calculadora()
1 resposta
solução!

Olá, Edgard! Como vai?

Eu testei a sua calculadora e ela ficou incrível! Continue resolvendo os desafios e compartilhando com a comunidade Alura.

Observei que você explorou o uso de funções lambda para tornar as operações matemáticas mais concisas, utilizou muito bem o try/except para tratar exceções de forma robusta e ainda compreendeu a importância do loop com menu interativo para melhorar a experiência do usuário.

Uma dica interessante para o futuro é usar dicionários para mapear operações. Dessa forma:

operacoes = {
    1: lambda x, y: x + y,
    2: lambda x, y: x - y,
    3: lambda x, y: x * y,
    4: lambda x, y: x / y if y != 0 else "Erro: Divisão por zero"
}

resultado = operacoes[opcao](x, y)

Essa modificação permite executar diretamente a operação escolhida, sem múltiplos if/elif.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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