What is the question line += 1 in this code?

Asked

Viewed 262 times

0

Can someone explain to me the function of the line questao +=1?

I’m a beginner and I’m trying to understand the logic behind the code and not just make it work.

 pontos = 0 questao = 1 while questao <=3:
     resposta = input('Resposta da questão {}: '.format(questao))
     if questao == 1 and resposta == 'b':
         pontos = pontos + 1
     if questao == 2 and resposta == 'a':
         pontos = pontos + 1
     if questao == 3 and resposta == 'd':
         pontos = pontos + 1
     questao +=1 print('O aluno fez {} pontos'.format(pontos))

1 answer

3

In short, the operator += sums the following value and adds it to the previous variable. In the case of:

questao +=1

is (more or less)* equivalent to

questao = questao + 1

*Not exactly equivalent, as @Jefferson Quesado pointed out, since the += sign in python replaces the special iadd method. As @hkotsubo suggested, for a more detailed explanation of the difference between the two forms, see this response.

In this case, when executing the line "questao += 1", the variable questao receives its own added current value of 1.

As quoted by @Luiz Augusto, more details can be found here.

To fully understand the code, you need to analyze line by line:

#Variável pontos possui valor 0, questao possui valor 1
pontos = 0
questao = 1

#A instrução while indica que o bloco de código seguinte será executado enquanto questao <= 3.
#Ou seja, cada linha abaixo será percorrida e, ao chegar ao final, será analisado se o valor contido na variável questao é menor ou igual a 3.
#Na primeira vez que esse código é executado, a variável questao possui valor igual a 1, portanto o bloco de código é executado
while questao <=3:

    #A variável resposta recebe o valor do "input".
    #O "input" apresenta ao usuário a frase: 'Resposta da questão {}:', onde {} é substituído pelo valor contido na variável questao.
    #Logo, na primeira execução, "input" apresenta ao usuário a seguinte frase: Resposta da questão 1
    #Após apresentar a frase, "input" aguarda que o usuário digite um valor e aperte enter.
    #O valor digitado é armazenado na variável resposta
    resposta = input('Resposta da questão {}: '.format(questao))

    # O if analisa 2 condições: se o valor da variável questao é igual a 1 e se o valor da variável resposta é igual a b.
    # Caso as duas condições sejam verdadeiras, ele altera o valor da variável pontos para pontos + 1.
    # Caso alguma das condições seja falsa, ele ignora a próxima linha e pula para o próximo if.
    # Detalhe: pontos = pontos + 1 poderia ser reescrito como pontos += 1
    if questao == 1 and resposta == 'b':
        pontos = pontos + 1

    # Aqui o if analisa 2 condições: se o valor da variável questao é igual a 2 e se o valor da variável resposta é igual a a.
    # Caso as duas condições sejam verdadeiras, ele altera o valor da variável pontos para pontos + 1.
    # Caso alguma das condições seja falsa, ele ignora a próxima linha e pula para o próximo if.
    if questao == 2 and resposta == 'a':
        pontos = pontos + 1

    # Aqui o if analisa 2 condições: se o valor da variável questao é igual a 3 e se o valor da variável resposta é igual a d.
    # Caso as duas condições sejam verdadeiras, ele altera o valor da variável pontos para pontos + 1.
    # Caso alguma das condições seja falsa, ele ignora a próxima linha e pula para a linha seguinte.
    if questao == 3 and resposta == 'd':
        pontos = pontos + 1

    # Aqui ele altera o valor da variável questao.
    # Na primeira execução ela irá mudar de 1 para 2.
    # Na segunda execução ela irá mudar de 2 para 3.
    # Na terceira execução ela irá mudar de 3 para 4.
    # Não haverá a quarta execução, pois o while irá notar que o valor da variável questao (3) é não é menor ou igual a 3
    questao +=1

#Por fim, após executar o código dentro do while 3 vezes, ele irá imprimir a frase seguinte, substituindo {} pelo valor contido na variável pontos.
#O valor na variável pontos irá depender dos valores que o usuário digita no input
print('O aluno fez {} pontos'.format(pontos))
  • 1

    "questao +=1 is equivalent to ;questao = questao + 1" high there! This is only true when the object is immutable. For versions of objects that accept internal changes, although the final behavior is the same, using the sum assignment is more efficient. Perhaps the best would be to say that they are "grossly equivalent"

  • Perfect! I updated the answer

  • 1

    I think it’s worth putting a link to this answer, which explains the difference in more detail

  • I added the link! This answer is very useful

Browser other questions tagged

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