Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Questão 9

Boa tarde, estou com uma duvida na questao da prova, eu tinha em mente como fazer e a estrutura do meu codigo ate esta parecida com a do instrutor, porem o meu collab denuncia um erro

gabarito = ['D','A','C','B','A','D','C','C','A','B']

prova = [ ]
corretas = [ ]
erradas = [ ]

for i in range(1,len(gabarito)):
  prova.append(input('Digite o gabarito do aluno, entre A,B,C ou D'))


for x in (1, len(gabarito)):
  if prova[x] == gabarito[x]:
    print('Resposta correta')
    corretas.append(prova)
  elif prova[x] != gabarito[x]:
    print('Resposta incorreta')
    erradas.append(prova)
  

resultado = len(corretas) - len(erradas)
print(f'O resultado da sua prova é {resultado}')



IndexError Traceback (most recent call last) in <cell line: 11>() 10 11 for x in (1, len(gabarito)): ---> 12 if prova[x] == gabarito[x]: 13 print('Resposta correta') 14 corretas.append(prova)

IndexError: list index out of range

poderiam me ajudar nessa? Agradeço desde já

2 respostas
solução!

Oi, Gabriel, tudo bem?

O erro "IndexError: list index out of range" no seu código acontece, pois no segundo loop você não utilizou a função range. Além disso, os índices de array começam em 0 em Python, então você deve iniciar seus loops em 0, não em 1. Para solucionar o problema poderíamos fazer a seguinte alteração no seu código:

for x in range(0,len(gabarito)):
    if prova[x] == gabarito[x]:
        print('Resposta correta')
        corretas.append(prova[x])
    elif prova[x] != gabarito[x]:
        print('Resposta incorreta')
        erradas.append(prova[x])

Outo detalhe importante, é que caso o aluno erre muitas respostas, o valor da prova pode ser negativo. Dessa forma, podemos apenas considerar os acertos. Ficaria assim:

resultado = len(corretas)

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado pelo ajuda!