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!

0
respostas

[Projeto] Desafio: Hora da prática (Tratamento de exceções em Python)

  1. Divisão com tratamento de erros
    try:
    n1 = float(input("Digite o primeiro número: "))
    n2 = float(input("Digite o segundo número: "))

    divisao = n1 / n2

except ZeroDivisionError as e:
print("Erro: divisão por zero não é permitida.")
except ValueError as e:
print("Erro: entrada inválida. Digite apenas números.")
except Exception as e:
print(type(e), e)
else:
print(f"Resultado: {divisao}")
2. Busca no dicionário com KeyError
idades = {'Júlia': 16, 'Carol': 23, 'Alberto': 19, 'Roberta': 17}

try:
nome = input("Digite um nome: ")
valor = idades[nome]
except KeyError:
print("Nome não encontrado")
else:
print(valor)
3. Conversão de lista para float com finally
def converte_lista(lista):
try:
nova_lista = [float(x) for x in lista]
except Exception as e:
print(type(e), e)
else:
return nova_lista
finally:
print("Fim da execução da função")

Exemplo

print(converte_lista(["1", "2", "3"]))
4. Agrupamento e soma de listas
def soma_listas(lista1, lista2):
try:
if len(lista1) != len(lista2):
raise ValueError("A quantidade de elementos em cada lista é diferente.")

    resultado = [
        (lista1[i], lista2[i], lista1[i] + lista2[i])
        for i in range(len(lista1))
    ]

except Exception as e:
    print(type(e), e)
else:
    return resultado
  1. Correção de provas (ValueError)
    gabarito = ['D', 'A', 'B', 'C', 'A']

def corretor(testes):
pontuacoes = []

try:
    for teste in testes:
        nota = 0

        for i in range(len(teste)):
            if teste[i] not in ['A', 'B', 'C', 'D']:
                raise ValueError(f"A alternativa {teste[i]} não é uma opção de alternativa válida")

            if teste[i] == gabarito[i]:
                nota += 1

        pontuacoes.append(nota)

except Exception as e:
    print(e)
else:
    return pontuacoes
  1. Verificação de pontuação em texto (NLP)
    def avalia_texto(texto):
    for palavra in texto:
    if ',' in palavra or '.' in palavra or '!' in palavra or '?' in palavra:
    raise ValueError(f'O texto apresenta pontuações na palavra "{palavra}".')
    return "Texto já tratado!"
  2. Divisão de colunas com múltiplas exceções
    def divide_colunas(lista_1, lista_2):
    try:
    if len(lista_1) != len(lista_2):
    raise ValueError("As listas precisam ter o mesmo tamanho.")

    resultado = [a / b for a, b in zip(lista_1, lista_2)]
    except ValueError as e:
    print(e)
    except ZeroDivisionError as e:
    print(f"{e}: A segunda lista não pode conter zeros.")
    else:
    return resultado