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] 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
1 resposta

Ei, Daniel! Tudo bem?

Excelente trabalho no desenvolvimento do seu desafio de tratamento de exceções em Python! Analisando cada exercício, fica claro que você compreendeu muito bem como estruturar blocos try e except para capturar erros específicos, como o ValueError e o ZeroDivisionError, além de saber quando usar o else para executar o código que depende do sucesso do bloco protegido.

Nos exercícios com def e return, está com uma boa organização ao separar responsabilidades dentro das funções. O uso do for combinado com len para iterar listas e verificar condições, como no corretor de provas e na divisão de colunas, mostra atenção aos detalhes e raciocínio lógico bem desenvolvido.

Outro pono também, o exercício de verificação de texto, onde a função avalia cada palavra em busca de pontuações antes de retornar o resultado. Esse tipo de validação é muito comum em pipelines de dados reais, e você aplicou a lógica de forma clara e eficiente.

Por fim, lembre-se de que o bloco finally sempre será executado, independentemente de ocorrer um erro ou não, o que o torna ideal para ações de limpeza e encerramento seguro de recursos.

Pensando nisso, em quais cenários práticos de engenharia de dados você acredita que o bloco finally seria indispensável para garantir a integridade da aplicação?

Conteúdos para complementar seus estudos
Esse conteúdo pode estar em inglês, para traduzi-lo utilize o tradutor automático do navegador ou clique com o botão direito do mouse sobre a página e selecione a opção Traduzir para o português.
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!