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]