Oiii Daniella, tudo bem?
Seu código está muito bom e próximo do que é esperado. No entanto, existem alguns pontos que podemos ajustar para atender totalmente ao enunciado. Deixo abaixo os pontos de correção:
- A verificação de alternativas válidas na função
confere_entrada
: a lista de alternativas válidas é ['A', 'B', 'C', 'D']
, não ['A', 'B', 'C', 'D', 'E'], pois a alternativa "E" não faz parte das opções de resposta - Será necessário modificar também a mensagem com o exemplo aparesentado para o usuário no laço
while True
. Trocando de: "aluno separados por espaço (Ex. a b c d e)" para "aluno separados por espaço (Ex. a b c d)" - Exceção
ValueError
: a mensagem deve indicar a alternativa que foi inválida, e não apenas listar todas as alternativas possíveis
Aplicando essas correções, o seu código ficará da seguinte forma:
z = 1
gabaritos = []
def confere_entrada(gabarito):
gabarito_aceitavel =['A','B','C','D']
for nota in gabarito:
if nota not in gabarito_aceitavel:
raise ValueError(f'A alternativa "{nota}" não é uma opção de alternativa válida')
def confere_gabarito(Notas:list)->float:
gabarito = ['D', 'A', 'B', 'C', 'A']
resultado = []
nota = 0
for i in range(len(Notas)):
nota = 0
for x ,y in zip(Notas[i],gabarito):
if x == y:
nota += 1
resultado.append(nota)
for valor in resultado:
pos_aluno = resultado.index(valor) + 1
print(f'O {pos_aluno}º obteve nota {valor} em seu teste')
while True:
try:
gabarito = (input(f'Entre com o gabarito do {z}º aluno separados por espaço (Ex. a b c d). Para sair digite (0)')).upper()
if gabarito == '0':
break
gabarito = gabarito.strip()
gabarito_aluno = gabarito.split(" ")
confere_entrada(gabarito_aluno)
gabaritos.append((gabarito_aluno))
z += 1
except ValueError as e:
print(e)
confere_gabarito(gabaritos)
Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado