I can not change the value of variables within a loop

2

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?

    
asked by anonymous 09.11.2015 / 17:05

1 answer

3

See, you defined the array with the answers as follows

respostas =  ['A', 'B', 'C', 'D', 'E', 'E', 'D', 'C', 'B', 'A']

At the time of validating what the user typed, you are doing

item = input('Digite a resposta da questão %d: '%(cont + 1)).lower()

if resposta == item:

So you're comparing a string with a string lowercase, that's the only problem with your code. This lower() must be changed to upper() .

    
09.11.2015 / 17:16