Projetos, questão #5:
def calcula_notas(gabarito, testes):
notas = []
alternativas_validas = ['A', 'B', 'C', 'D']
try:
for teste in testes:
# Verifica se todas as alternativas são válidas
for resposta in teste:
if resposta not in alternativas_validas:
raise ValueError(f"A alternativa {resposta} não é uma opção de alternativa válida")
# Calcula a nota do estudante
nota = sum(1 for r, g in zip(teste, gabarito) if r == g)
notas.append(nota)
except ValueError as e:
print("Erro:", e)
else:
# Executado apenas se não houver exceção
print("Notas calculadas com sucesso:", notas)
finally:
# Sempre será executado
print("Processo de cálculo finalizado.")
return notas
# Gabarito da prova
gabarito = ['D', 'A', 'B', 'C', 'A']
# Teste sem exceção
testes_sem_ex = [['D', 'A', 'B', 'C', 'A'],
['C', 'A', 'A', 'C', 'A'],
['D', 'B', 'A', 'C', 'A']]
# Teste com exceção
testes_com_ex = [['D', 'A', 'B', 'C', 'A'],
['C', 'A', 'A', 'E', 'A'],
['D', 'B', 'A', 'C', 'A']]
print("### Teste sem exceção ###")
calcula_notas(gabarito, testes_sem_ex)
print("\n### Teste com exceção ###")
calcula_notas(gabarito, testes_com_ex)
Saída:
Teste sem exceção
Notas calculadas com sucesso: [5, 3, 3]
Processo de cálculo finalizado.
Teste com exceção
Erro: A alternativa E não é uma opção de alternativa válida
Processo de cálculo finalizado.