1
resposta

[Projeto] calculadora com lambda

def solicitar_primeiro_numero() -> int:
    return validar_numeros_digitados('Digite o primeiro número: ')


def solicitar_segundo_numero() -> int:
    return validar_numeros_digitados('Digite o segundo número: ')


def validar_numeros_digitados(mensagem: str) -> int:    
    while True:
        entrada = input(mensagem)
        try:
            valor = int(entrada)

            if valor < 0:
                raise ValueError('O valor não pode ser negativo. Tente novamente')
            return valor
        except ValueError:
            print('Valor inválido. Digite apenas um número inteiro (EX: 5)')


def escolher_operador():
    operador = input('Escolha a operação (| + | - | * | / |): ')

    if operador == '+':
        return lambda x, y: x + y
    elif operador == '-':
        return lambda x, y: x - y
    elif operador == '*':
        return lambda x, y: x * y
    elif operador == '/':
        return lambda x, y: x / y if y != 0 else 'Erro: divisão por zero'
    else:
        print('Operador inválido. Tente novamente.')
        return escolher_operador()


def continuar_programa() -> bool:
    while True:
        resposta = input('Deseja fazer outra operação? (s/n): ').strip().lower()
        if resposta in ('s', 'n'):
            return resposta == 's'
        print('Resposta inválida, digite "s" para sim ou "n" para não.')
        

def main():
    while True:
        numero1 = solicitar_primeiro_numero()
        numero2 = solicitar_segundo_numero()
        operacao = escolher_operador()

        resultado = operacao(numero1, numero2)
        print(f'Resultado: {resultado}')
        
        if not continuar_programa():
            print('Programa encerrado!')
            break



if __name__ == '__main__':
    main()
1 resposta

Oi Matheus, tudo bem? 😊

Parabéns pelo seu projeto de calculadora em Python! 👍

O código está bem estruturado e fácil de entender.

Aqui estão algumas sugestões para aprimorar ainda mais o seu código:

  • Funções Lambda: As funções lambda são ótimas para operações simples, mas em alguns casos, funções nomeadas podem melhorar a legibilidade.
  • Tratamento de Erros: O tratamento de divisão por zero está ótimo! 😄
  • Modularização: Considere separar a lógica de entrada e saída em funções distintas para facilitar os testes e a reutilização.

🎓 Para saber mais: