1
resposta

Projeto Final

1. Divisão com tratamento de exceções

try:
    num1 = float(input("Digite o primeiro número: "))
    num2 = float(input("Digite o segundo número: "))
    resultado = num1 / num2
    print("Resultado da divisão:", resultado)
except ValueError as ve:
    print("Erro de valor:", ve)
except ZeroDivisionError as ze:
    print("Erro de divisão por zero:", ze)
2. Busca com tratamento de KeyError

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

nome = input("Digite o nome para busca: ")

try:
    valor = idades[nome]
    print("Idade encontrada:", valor)
except KeyError:
    print("Nome não encontrado")
3. Conversão para float com tratamento e finally

def converte_lista_float(lista):
    try:
        nova_lista = [float(x) for x in lista]
        return nova_lista
    except Exception as e:
        print("Erro ocorrido:", e)
    finally:
        print("Fim da execução da função")

# Teste:
# print(converte_lista_float(['2.4', '3', 'abc']))  # Gera erro
# print(converte_lista_float(['2.4', '3.1']))       # Correto
4. Agrupamento de listas com soma e tratamento de erros

def agrupa_e_soma(lista1, lista2):
    try:
        if len(lista1) != len(lista2):
            raise IndexError("A quantidade de elementos em cada lista é diferente.")
        resultado = [(lista1[i], lista2[i], lista1[i] + lista2[i]) for i in range(len(lista1))]
        return resultado
    except Exception as e:
        print("Erro:", e)

# Testes:
# lista1 = [4,6,7,9,10]; lista2 = [-4,6,8,7,9]       # Correto
# lista1 = [4,6,7,9,10,4]; lista2 = [-4,6,8,7,9]     # Tamanho diferente
# lista1 = [4,6,7,9,'A']; lista2 = [-4,'E',8,7,9]    # Erro de tipo
5. Correção de testes com alternativas inválidas

def corrigir_provas(gabarito, respostas):
    try:
        for teste in respostas:
            for alt in teste:
                if alt not in ['A', 'B', 'C', 'D']:
                    raise ValueError(f"A alternativa {alt} não é uma opção de alternativa válida")
        notas = [sum(1 for i in range(len(gabarito)) if teste[i] == gabarito[i]) for teste in respostas]
        return notas
    except Exception as e:
        print("Erro:", e)

# gabarito = ['D', 'A', 'B', 'C', 'A']
# testes_sem_ex = [['D', 'A', 'B', 'C', 'A'], ['C', 'A', 'A', 'C', 'A'], ['D', 'B', 'A', 'C', 'A']]
# testes_com_ex = [['D', 'A', 'B', 'C', 'A'], ['C', 'A', 'A', 'E', 'A'], ['D', 'B', 'A', 'C', 'A']]
# print(corrigir_provas(gabarito, testes_sem_ex))     # Deve imprimir as notas
# print(corrigir_provas(gabarito, testes_com_ex))     # Deve lançar ValueError
6. Detecção de pontuações em palavras

def verificar_pontuacao(lista_palavras):
    try:
        for palavra in lista_palavras:
            if ',' in palavra or '.' in palavra or '!' in palavra or '?' in palavra:
                raise ValueError(f'O texto apresenta pontuações na palavra "{palavra}".')
        print("Texto limpo de pontuações.")
    except ValueError as e:
        print("Erro:", e)

# lista_tratada = ['Python', 'é', 'uma', ...]     # Correto
# lista_nao_tratada = ['Python', 'é', ..., 'artificial!']  # Deve gerar erro
7. Divisão de listas de pressão/temperatura com tratamento

def divide_colunas(pressoes, temperaturas):
    try:
        if len(pressoes) != len(temperaturas):
            raise ValueError("As listas possuem tamanhos diferentes.")
        resultado = [p / t for p, t in zip(pressoes, temperaturas)]
        return resultado
    except ZeroDivisionError:
        print("Erro: divisão por zero encontrada.")
    except ValueError as ve:
        print("Erro:", ve)
    except Exception as e:
        print("Erro inesperado:", e)

# Testes:
# Sem exceção:
# pressoes = [100, 120, 140, 160, 180]
# temperaturas = [20, 25, 30, 35, 40]

# ZeroDivisionError:
# pressoes = [60, 120, 140, 160, 180]
# temperaturas = [0, 25, 30, 35, 40]

# ValueError:
# pressoes = [100, 120, 140, 160]
# temperaturas = [20, 25, 30, 35, 40]
1 resposta

E aí, Viviane! Tudo bem?

Parabéns! Mantenha o ritmo nos exercícios e continue compartilhando na nossa comunidade.

Percebi que você praticou o tratamento de exceções com try, except e finally. Aplicou muito bem o levantamento de erros com raise para validar entradas e ainda entendeu a relevância de mensagens nos erros para melhorar a experiência do usuário e depurar o código.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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