I can’t change the value of variables inside a loop

Asked

Viewed 729 times

2

I’m trying to solve the following exercise:

Develop a program to check the student’s grade in a test with 10 questions, the program should ask the student the answer of each question and finally compare with the proof template and thus calculate the total hits and the grade (give 1 point for correct answer). After each student using the system should be asked a question if another student will use the system. After all students have responded inform:

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 that 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 variable higher Certain, lower and average are with the initial values. I need to use the global to modify a variable within a loop or am forgetting something?

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 has 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 capital letter with a string lowercase, that’s the only problem with your code. That’s lower() must be exchanged for upper().

  • Puts ended up forgetting that detail. Thanks for the help!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.