Carregando...

O laço while

Na página anterior, for percorria valores que já estavam prontos: números de range, ou as letras de tea. while não traz uma lista feita. Antes das linhas recuadas, e antes de cada volta, inclusive a primeira, faz uma pergunta. True quer dizer que essas linhas correm. Se o número lá dentro não mudar, a pergunta não fica False e o laço não acaba.

Deixe cups em 0. A pergunta é cups < 3. O zero passa, então escreve-se 0 e cups anda um. O mesmo com 1 e depois com 2. Depois de escrever 2, cups vale 3. A pergunta falha. O 3 não está na tela. Ficou dentro de cups, e foi por isso que a pergunta falhou.

0, 1 e 2, depois para

python
cups = 0
while cups < 3:
    print(cups)
    cups = cups + 1

Você vê três linhas: 0, depois 1, depois 2. Após o laço, cups guarda 3. O próprio laço não imprime esse 3, porque print só entra se a pergunta passou. Para ver o 3, escreva print na mesma altura de while, fora do laço.

Já fora do limite, as linhas recuadas não entram

Ponha cups em 3 antes de while. A primeira pergunta falha na hora. As linhas de dentro não correm nem uma vez. done está na mesma altura de while, então não faz parte do laço e é escrito uma vez, depois que while decide parar.

O laço não entra, depois done

python
cups = 3
while cups < 3:
    print(cups)
    cups = cups + 1
print("done")

A tela só tem done. Nenhum número. print(cups) estava dentro do laço, e o laço não chegou a começar.

A linha cups = cups + 1 empurra o número até a pergunta finalmente falhar. Tire-a: cups fica em 0, cups < 3 continua True, e 0 é escrito sem parar. O programa não sai desse laço.

Depois de while são precisos dois pontos, como em for e em if. As linhas que se repetem ficam quatro espaços mais para dentro. A palavra é minúscula. While com W maiúsculo é um nome que Python não conhece, e o programa para.

A página seguinte pode cortar mais cedo

Esta página espera a própria pergunta ficar False. A seguinte faz outra coisa: cortar o laço, ou pular uma volta, antes de a pergunta falhar sozinha.

Adivinhe primeiro

  1. cups começa em 0 e a pergunta é cups < 3. Que números são escritos?
  2. Depois do laço, que número ficou em cups, mesmo sem ter sido escrito?
  3. cups começa em 3 e done está na altura de while. O que aparece?
  4. Você apaga cups = cups + 1. O laço termina?

Onde a gente erra

  • Tratar o 3 final como uma linha impressa
  • Esperar um número quando cups já é 3 antes de while
  • Esquecer cups = cups + 1 e esperar uma última linha que não vem
  • Esquecer os dois pontos depois de while
  • Escrever While com maiúscula

O que levar

while pergunta antes de cada volta. As linhas recuadas só correm enquanto a resposta for True.
A partir de 0, com cups < 3, você vê 0, 1 e 2. cups fica então em 3, e esse 3 não é impresso.
Se a pergunta já é False, essas linhas nunca correm, e uma linha na altura de while corre uma vez.
Sem cups = cups + 1 a pergunta continua True e o laço não termina.
A página seguinte pode cortar o laço ou pular uma volta.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
5
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo