1
resposta

Desafio: hora da prática

Gentileza, me aguardar finalizar os 7 exercícios para só então dar feedack.

Aquecimento

1. Faça um programa que solicite à pessoa usuária digitar dois números float e calcular a divisão entre esses números. O código deve conter um tratamento de erro, indicando o tipo de erro que foi gerado caso a divisão não seja possível de realizar. Teste o programa com o segundo valor numérico do input igual a 0. Também teste utilizando caracteres textuais no input para checar os tipos de erro que ocorrem.

def main():
    while True:  
        try:
            numero_1 = float(input("Digite o primeiro número: "))
            numero_2 = float(input("Digite o segundo número: "))

            resultado = numero_1 / numero_2
            print(f'O resultado da divisão é: {resultado}')
            break 

        except Exception as e:
            print("Não foi possível realizar a divisão.")
            print(f'Tipo de erro: {type(e).__name__}')
            print(f'Descrição do erro: {e}')
            print(f'Tente novamente...')

if __name__ == "__main__":
    main()

Digite o primeiro número: 15
Digite o segundo número: 0
Não foi possível realizar a divisão.
Tipo de erro: ZeroDivisionError
Descrição do erro: float division by zero
Tente novamente...
Digite o primeiro número: 15
Digite o segundo número: três
Não foi possível realizar a divisão.
Tipo de erro: ValueError
Descrição do erro: could not convert string to float: 'três'
Tente novamente...
Digite o primeiro número: 15
Digite o segundo número: 3
O resultado da divisão é: 5.0

2. Faça um programa que solicite à pessoa usuária digitar um texto que será uma chave a ser pesquisada no seguinte dicionário: idades = {'Júlia': 16, 'Carol': 23, 'Alberto': 19, 'Roberta': 17}, armazenando o resultado do valor em uma variável. O código deve conter um tratamento de erro KeyError, imprimindo a informação 'Nome não encontrado', caso ocorra o erro; e imprimir o valor caso não ocorra nenhum. Teste o programa com um nome presente em uma das chaves do dicionário e com um que não esteja no dicionário para verificar a mensagem de erro.

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

while True:
    chave = input("Digite o nome que deseja pesquisar: ")

    try:
        valor = idades[chave]
        print(f'Idade encontrada: {valor}')
        break  
    except KeyError:
        print("Nome não encontrado. Tente novamente.")

Digite o nome que deseja pesquisar: Leonor
Nome não encontrado. Tente novamente.
Digite o nome que deseja pesquisar: Roberta
Idade encontrada: 17

3. Crie uma função que recebe uma lista como parâmetro e converta todos os valores da lista para float. A função deve conter um tratamento de erro indicando o tipo de erro gerado e retornar a lista caso não tenha ocorrido nenhum erro. Por fim, deve ter a cláusula finally para imprimir o texto: 'Fim da execução da função'.

def converter_para_float(lista):
    try:
        lista_convertida = [float(item) for item in lista]
        return lista_convertida
    except Exception as e:
        print(f'Ocorreu um erro: {type(e).__name__} - {e}')
    finally:
        print("Fim da execução da função")

valores = []
print("Digite os números da lista (digite 'sair' para terminar):")

while True:
    entrada = input("Digite um número: ")
    if entrada.lower() == "sair":
        break
    try:
        numero = float(entrada)
        valores.append(numero)
    except ValueError:
        print("Valor inválido! Tente novamente.")

resultado = converter_para_float(valores)

if resultado:
    print("Lista convertida:", resultado)

Digite os números da lista (digite 'sair' para terminar):
Digite um número: 8
Digite um número: 15
Digite um número: dezenove
Valor inválido! Tente novamente.
Digite um número: 19
Digite um número: 28
Digite um número: sair
Fim da execução da função
Lista convertida: [8.0, 15.0, 19.0, 28.0]
1 resposta

Ei! Tudo bem, Andressa?

Que ótima entrega! No desenvolvimento em Python voltado para Data Science, dominar o tratamento de exceções é fundamental para garantir que nossos scripts de automação e pipelines de dados não quebrem por conta de entradas inesperadas.

O seu código ficou excelente e demonstra um ótimo domínio da lógica de programação. Gostei que a sua função que utiliza list comprehension para a conversão ficou super limpa e elegante. A cláusula foi aplicada certinho, garantindo a exibição da mensagem independentemente do sucesso ou erro na conversão. O seu script de captura de dados para alimentar a lista também ficou impecável!

Meus parabéns pela dedicação e organização nas respostas!

Como você se sentiu construindo essas estruturas de repetição integradas com os blocos de exceção?

Conteúdo 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!