3
respostas

O número 5 não entra? Nã ofaz sentido!

Olá pessoas.

Seguinte, dei uma olhada nas respostas e vi que o contador não imprimiria/mostraria o n°5 dentro do laço/while. Mas não há nada que indica isso, pois o print é anterior à condição -- if(contador == 5): --.´E uma vez que o contador começa pelo número 1; há uma linha que soma + 2 ao contador (linha 3), e chegando ao 5, continua somando +2. Portanto deveria ser 1,3,5,7 e 9. O print não deveria influenciar nada, não é? Ou o if "suspende" a contagem e "pula" para o próximo número?

Agradeço que responder.

3 respostas

Olá, Nicholas. Tudo bem?

Vamos tentar entender as etapas da execução desse código, passando pelos detalhes que acontecem a cada iteração do laço while.

  • O contador começa com 1, e entramos no laço de repetição. O código imprime o valor 1. Depois de imprimir esse valor, ele adiciona +2 no contador, que agora tem o valor 3. Não entramos no if.

  • Na segunda iteração do laço while, começamos imprimindo o valor 3 do contador. Após isso, é adicionado +2 novamente no seu valor. Agora o contador armazena o valor 5. Nessa iteração entramos no if. E mais uma vez adicionamos +2 no contador, que agora vale 7. Por isso o código não imprime o valor 5, já que devido ao if, seu valor é atualizado antes de voltarmos para o print no início do laço de repetição.

  • Depois disso, a execução segue normalmente, imprimindo os valores 7 e 9.

Desse modo, a saída do código será: 1 3 7 9. Caso queira ter certeza desse resultado, é possível copiar o código e executá-lo em seu computador.

Espero ter ajudado. Qualquer outra dúvida estou a disposição.

Abraços. Bons estudos!

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

Oi Gabrielle. Grato pela atenção.

Sim, eu entendi o passo a passo, mas o que falta é lógica: o 5 deveria entrar, pois não faz sentido o código pular ou suspender o número simplesmente por haver o "if". Nesse sentido, penso que há uma falha, por assim dizer, na própria programação do Python.

Para clarificar o que quero dizer, pense em uma sala de aula em que se ensina matemática aos alunos. Como professor eu peço para começarem do numero 1 e irem adicionando 2. Aí quando os estudantes chegam no 5 eu digo: não, agora ele não entra. Por que? Por que... sim/estou mandando/ ou o código tem que ser assim. Entende? Não faz sentido.

Como o código diz:

contador = 1 #### Começa do número 1

while(contador <= 10): #### Vai até o número 10.

print(contador) #### Imprime número 1
contador = contador + 2 #### 1+2 = 3 [e continua o processo... com 3+2=5]
if(contador == 5): #### chegou no 5!!!! Maravilha!!!!
    contador = contador + 2 #### Adiciono 2 ao 5 = 7...

Em resumo: como chega ao número 7(sete) somando apenas 2(dois), uma única vez, ao número 3(três)?

Dúvida complicada, mas antes de saber programar, preciso saber o que é cada função e o porquê dela ser assim.

Estava com a mesma dúvida mas a explicação da Gabriela foi perfeita, acho que falta isso na aula, o professor as vezes deixa tudo muito solto, mas talvez seja porque iniciar já com python sem ver a introdução a programação cause isso.