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

Calculadora com tratamento de erros

Carlos está criando uma calculadora simples, mas quer garantir que o programa não quebre se o usuário digitar valores inválidos, ele precisa tratar os erros.

Crie uma calculadora que permita ao usuário escolher entre soma, subtração, multiplicação e divisão. Além de modularizar o código em funções, use try-except para tratar erros de entrada inválida, que consiste em:

Caso digite um caractere em vez de número | exceção a ser lançada: ValueError;
Caso tente fazer uma divisão por 0 | exceção a ser lançada: ZeroDivisionError.

  • Exemplo de entrada:

Digite o primeiro número: 5
Escolha a operação (+, -, *, /): +
Digite o segundo número: 7

  • Saída esperada:

Resultado: 12

  • Caso selecione nenhuma das operações listadas:

Opção inválida

  • Caso digite um caractere em vez de número:

Erro: Entrada inválida. Digite apenas números.

  • Caso tente fazer uma divisão por 0:

Erro: Divisão por zero não é permitida.

def somar(primeiro_num, segundo_num):
    return primeiro_num + segundo_num

def subtrair(primeiro_num, segundo_num):
    return primeiro_num - segundo_num

def multiplicar(primeiro_num, segundo_num):
    return primeiro_num * segundo_num

def dividir(primeiro_num, segundo_num):
    return primeiro_num / segundo_num
    if segundo_num == 0:
       raise ZeroDivisionError

def calculadora():
    try:
        primeiro_num = float(input("Digite um número: "))
        operacao = (input("Escolha a operação (+,-,*,/): "))
        segundo_num = float(input("Digite o segundo número: "))
        if operacao == "+":
            resultado = somar(primeiro_num, segundo_num)
        elif operacao == "-":
            resultado = subtrair(primeiro_num, segundo_num)
        elif operacao == "*":
            resultado = multiplicar(primeiro_num, segundo_num)
        elif operacao == "/":
            resultado = dividir(primeiro_num, segundo_num)
        else:
            print("Opção inválida")
            return
        print(f"resultado: {resultado}")
    except ValueError:
            print("Erro: Entrada inválida. Digite apenas números.")
    except ZeroDivisionError:
            print("Erro: Divisão por zero não é permitida.")
calculadora()

Digite um número: 5
Escolha a operação (+,-,*,/): +
Digite o segundo número: 7
resultado: 12.0

Digite um número: aa
Erro: Entrada inválida. Digite apenas números.

Digite um número: 5
Escolha a operação (+,-,*,/): /
Digite o segundo número: 0
Erro: Divisão por zero não é permitida.
1 resposta
solução!

Oii, Carlos! Tudo bem?

A sua implementação da calculadora ficou muito boa. Você conseguiu modularizar bem as funções e aplicar o tratamento de exceções de forma precisa, garantindo que o programa lide com entradas inesperadas sem encerrar abruptamente.

Pontos positivos do seu código:

  • Modularização: Criar funções específicas para cada operação aritmética torna o código mais limpo e organizado.
  • Tratamento de exceções: O uso do try-except para capturar ValueError e ZeroDivisionError está correto e segue exatamente o que foi pedido no desafio.
  • Fluxo de controle: A estrutura de if/elif/else para selecionar a operação está bem definida, inclusive tratando o caso de uma opção inválida.

Parabéns pelo trabalho!

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