I'm trying to solve the following exercise:
To develop a program to verify the student's grade in a 10-question test, the program should ask the student the answer to each question. question and at the end compare with the test template and thus calculate the total hits and the score (assign 1 point per correct answer). After each student using the system should be asked a question if another student will use the system. After all the students answered report:
Maior e Menor Acerto; Total de Alunos que utilizaram o sistema; A Média das Notas da Turma. Gabarito da Prova: 01 - A 02 - B 03 - C 04 - D 05 - E 06 - E 07 - D 08 - C 09 - B 10 - A
For this I thought of the following algorithm:
respostas = ['A', 'B', 'C', 'D', 'E', 'E', 'D', 'C', 'B', 'A'] #Lista com as respostas do teste
#Declaração das variaveis
maiorAcerto = 0
menorAcerto = 10
totalAlunos = 0
media = 0
while True:
cont = 0
acertos = 0
erros = 0
for resposta in respostas: #For loop que vai verificar se a resposta digitada é igual ao item correto da questão
item = input('Digite a resposta da questão %d: '%(cont + 1)).lower()
if resposta == item:
acertos += 1
else:
erros += 1
cont += 1
totalAlunos += 1 #Incremento de aluno
media += acertos #Acumuda o número de acertos em média
if acertos > maiorAcerto: #Teste para saber se o aluno obteve a maior quantidade de acertos
maiorAcerto = acertos
if erros < menorAcerto: #Teste para saber se o aluno obteve a menor quantidade acertos
menorAcerto = erros
#Verifica se mais um aluno deseja checar suas respostas.
continuar = input('Deseja continuar a usar o programa? Digite S(sim) ou N(não)\n').lower()
if continuar == 's':
continue
elif continuar == 'n':
break
media = media / totalAlunos #Calcula a média dividindo o total dos acertos pelo número de alunos
print('%d alunos usaram o sistema'%totalAlunos)
print('A maior quantidade de acertos: %d'%maiorAcerto)
print('A menor quantidade de acertos: %d'%menorAcerto)
print('A média da turma foi: %.2f'%media)
However, at the end of the program, the major variableAcertos, minorAcertos and medio are with the initial values. Do I need to use global to modify a variable within a loop or am I forgetting something?