5. Pontuação de estudantes com validação de alternativas
def calcula_notas(testes: list, gabarito: list) -> list:
notas = []
for respostas in testes:
for alternativa in respostas:
if alternativa not in ['A', 'B', 'C', 'D']:
raise ValueError(f"A alternativa {alternativa} não é uma opção de alternativa válida")
nota = sum(1 for r, g in zip(respostas, gabarito) if r == g)
notas.append(nota)
return notas
Teste sem exceção
gabarito = ['D', 'A', 'B', 'C', 'A']
testes_sem_ex = [['D', 'A', 'B', 'C', 'A'], ['C', 'A', 'A', 'C', 'A'], ['D', 'B', 'A', 'C', 'A']]
print(calcula_notas(testes_sem_ex, gabarito)) # [5, 3, 4]
Teste com exceção
testes_com_ex = [['D', 'A', 'B', 'C', 'A'], ['C', 'A', 'A', 'E', 'A'], ['D', 'B', 'A', 'C', 'A']]
try:
print(calcula_notas(testes_com_ex, gabarito))
except ValueError as e:
print("Erro:", e)
6. Verificação de pontuação em palavras
def verifica_pontuacao(lista_palavras: list):
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}".')
return "Texto tratado corretamente."
Teste sem exceção
lista_tratada = ['Python', 'é', 'uma', 'linguagem', 'de', 'programação', 'poderosa', 'versátil',
'e', 'fácil', 'de', 'aprender', 'utilizada', 'em', 'diversos', 'campos', 'desde',
'análise', 'de', 'dados', 'até', 'inteligência', 'artificial']
print(verifica_pontuacao(lista_tratada))
Teste com exceção
lista_nao_tratada = ['Python', 'é', 'uma', 'linguagem', 'de', 'programação', 'poderosa,', 'versátil',
'e', 'fácil,', 'de', 'aprender', 'utilizada', 'em', 'diversos', 'campos,', 'desde',
'análise', 'de', 'dados', 'até', 'inteligência', 'artificial!']
try:
print(verifica_pontuacao(lista_nao_tratada))
except ValueError as e:
print("Erro:", e)
7. Divisão entre pressão e temperatura
def divide_colunas(pressoes: list, temperaturas: list) -> list:
try:
if len(pressoes) != len(temperaturas):
raise ValueError("As listas não possuem o mesmo tamanho.")
resultado = [p/t for p, t in zip(pressoes, temperaturas)]
return resultado
except ZeroDivisionError as e:
print("Erro:", e)
except ValueError as e:
print("Erro:", e)
Teste sem exceção
pressoes = [100, 120, 140, 160, 180]
temperaturas = [20, 25, 30, 35, 40]
print(divide_colunas(pressoes, temperaturas)) # [5.0, 4.8, 4.67, 4.57, 4.5]
Teste com ZeroDivisionError
pressoes = [60, 120, 140, 160, 180]
temperaturas = [0, 25, 30, 35, 40]
print(divide_colunas(pressoes, temperaturas))
Teste com ValueError
pressoes = [100, 120, 140, 160]
temperaturas = [20, 25, 30, 35, 40]
print(divide_colunas(pressoes, temperaturas))