Solucionado (ver solução)

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!

Solucionado
(ver solução)
1
resposta

Desafio: hora da prática | Python para Dados: trabalhando com funções, estruturas de dados e exceções PT 1

1. Divisão entre dois números float com tratamento de erros

try:
    num1 = float(input("Digite o primeiro número: "))
    num2 = float(input("Digite o segundo número: "))

    resultado = num1 / num2
    print(f"Resultado da divisão: {resultado}")

except ZeroDivisionError as erro:
    print(f"Erro: {type(erro).__name__} - Não é possível dividir por zero.")

except ValueError as erro:
    print(f"Erro: {type(erro).__name__} - Entrada inválida.")

2. Pesquisa de chave em dicionário

idades = {
    'Júlia': 16,
    'Carol': 23,
    'Alberto': 19,
    'Roberta': 17
}

try:
    nome = input("Digite um nome: ")
    idade = idades[nome]
    print(f"Idade: {idade}")

except KeyError:
    print("Nome não encontrado")

3. Converter lista para float

def converter_para_float(lista):
    try:
        lista_float = [float(item) for item in lista]
        return lista_float

    except Exception as erro:
        print(f"Erro: {type(erro).__name__}")

    finally:
        print("Fim da execução da função")


# Testes
lista1 = ['1', '2', '3.5']
print(converter_para_float(lista1))

lista2 = ['1', 'abc', '3']
print(converter_para_float(lista2))

4. Agrupar listas em tuplas

def agrupar_listas(lista1, lista2):
    try:
        if len(lista1) != len(lista2):
            raise IndexError(
                "A quantidade de elementos em cada lista é diferente."
            )

        resultado = []

        for i in range(len(lista1)):
            soma = lista1[i] + lista2[i]
            resultado.append(
                (lista1[i], lista2[i], soma)
            )

        return resultado

    except Exception as erro:
        print(f"{type(erro).__name__}: {erro}")


# Teste sem erro
lista1 = [4,6,7,9,10]
lista2 = [-4,6,8,7,9]

print(agrupar_listas(lista1, lista2))

# Teste tamanhos diferentes
lista1 = [4,6,7,9,10,4]
lista2 = [-4,6,8,7,9]

print(agrupar_listas(lista1, lista2))

# Teste valores incoerentes
lista1 = [4,6,7,9,'A']
lista2 = [-4,'E',8,7,9]

print(agrupar_listas(lista1, lista2))

1 resposta
solução!

Oi! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura. Ver a evolução prática de quem está aprendendo Python para dados é sempre muito gratificante.

Analisando suas soluções, é possível perceber um entendimento sólido sobre o uso de blocos try e except para capturar erros como ZeroDivisionError, ValueError e KeyError. A função converter_para_float, por exemplo, demonstra boa organização ao iterar sobre uma lista e retornar uma lista_float com os valores convertidos, além de utilizar o bloco finally para garantir que uma mensagem sempre seja exibida ao fim da execução.

Uma dica interessante para o futuro é utilizar a função zip() para percorrer duas listas ao mesmo tempo, eliminando a necessidade de controlar índices manualmente.


lista1 = [1, 2, 3]
lista2 = [4, 5, 6]

for valor1, valor2 in zip(lista1, lista2):
    print(valor1 + valor2)

Esse trecho percorre lista1 e lista2 simultaneamente, exibindo no print a soma dos elementos correspondentes. Além de simplificar a leitura, ajuda a reduzir a complexidade geral do código.

Durante a realização desses desafios, qual foi o maior aprendizado que você teve sobre o uso de exceções em Python?

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