Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Calculadora com tratamento de erros

def soma(num1, num2):
    return num1 + num2
def subtrair(num1, num2):
    return num1 - num2
def multiplicar(num1, num2):
    return num1 * num2
def dividir(num1,num2):
    if num2 == 0:
        raise ZeroDivisionError
    return num1 / num2

def calculadora():
    try:
        num1 = float(input('Digite o primeiro numero: '))
        operador = float(input('Escolha sua operacao (+, -, *, /): '))
        num2 = float(input('Digite o segundo numero: '))

        if operador == '+':
            resultado = soma(num1, num2)
        elif operador == '-':
            resultado = subtrair(num1, num2)
        elif operador == '*':
            resultado = multiplicar(num1, num2)
        elif operador == '/':
            resultado = subtrair(num1, num2)
        else:
            print('Operacao invalida!')
            return
        print(f'Resultado: {resultado}')

    except ValueError:
        print('ERRO: Entra invalida digite apenas numero')
    except ZeroDivisionError:
        print('ERRO: Divisao por zero nao e permitida.')
    
calculadora()
1 resposta

Oi, Apollo! Como vai?

Gostei da forma como você separou as operações em funções, deixando o código mais organizado e fácil de manter. Notei também que você adicionou tratamento para ValueError e ZeroDivisionError, o que demonstra uma boa preocupação com possíveis erros durante a execução.

Apenas atenção em dois pontos: a variável operador está sendo recebida com float(), mas ela deve ser uma string, e na condição elif operador == '/' você chamou a função subtrair() em vez de dividir().

Uma dica interessante para o futuro é utilizar um dicionário para associar operadores às funções, reduzindo a quantidade de if e elif. Veja este exemplo:


operador = input('Digite a operacao: ')

operacoes = {
    '+': soma,
    '-': subtrair,
    '*': multiplicar,
    '/': dividir
}

resultado = operacoes[operador](num1, num2)

Nesse exemplo, o dicionário relaciona cada operador a uma função, tornando o código mais compacto e fácil de expandir.

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