
Passo 1 de 6
Entender o ciclo do while
Reconheça a estrutura do while e acompanhe o caminho entre o teste da condição, o corpo e a saída do laço.
Trilha de aprendizado · Nível 2 · Tutorial 4
Criar repetições controladas por uma condição e garantir que o estado do programa permita encerrá-las.
Entender o ciclo do while
Reconheça a estrutura do while e acompanhe o caminho entre o teste da condição, o corpo e a saída do laço. 3 min
Atualizar o estado para chegar ao fim
Defina um valor inicial e atualize a variável de controle para que a condição do while se torne falsa. 3 min
Prever nenhuma, uma ou várias execuções
Preveja quantas vezes o corpo de um while executa, o que aparece na tela e qual valor permanece ao terminar. 3 min
Reconhecer e interromper um laço sem fim
Identifique atualizações que não levam à saída e pratique a interrupção de um script com Ctrl+C no terminal. 3 min
Repetir entradas até receber um valor sentinela
Organize a leitura e a atualização de textos para encerrar uma repetição quando o usuário digitar sair. 4 min
Aplicar e revisar: repetir até sair
Execute um programa no seu computador, confira três cenários e explique como a repetição termina. 5 min

Passo 1 de 6
Reconheça a estrutura do while e acompanhe o caminho entre o teste da condição, o corpo e a saída do laço.
Você já usou if para decidir se um bloco deve executar. O while também testa uma condição, mas tem uma diferença: depois de executar o bloco, ele volta ao teste.
Essa estrutura de repetição é chamada de laço. Cada execução do corpo do laço é uma iteração.
temperatura = 25
while temperatura > 30:
print("Acima do limite")
print("Fora do laço")Na linha while temperatura > 30:, temos a palavra-chave while, a condição temperatura > 30 e os dois-pontos :.
O print indentado é o corpo do laço. Já print("Fora do laço"), sem recuo, está depois dele.
O teste acontece antes de cada execução do corpo:
No exemplo, 25 > 30 é falso. Por isso, o programa segue diretamente para print("Fora do laço").

Terminar o corpo não significa sair do while: o próximo destino é o teste da condição.
Em um while, o teste deu verdadeiro e o corpo foi executado. O programa voltou ao teste, que agora deu falso. Qual é o próximo passo?

Passo 2 de 6
Defina um valor inicial e atualize a variável de controle para que a condição do while se torne falsa.
O valor consultado pela condição é o estado de controle do laço. Neste exemplo, ele está na variável nivel.
Definimos nivel = 6 antes do while. Dentro do corpo, nivel = nivel - 2 substitui o valor atual por outro, duas unidades menor. Assim, o próximo teste consulta o valor atualizado.
A definição inicial fica fora do laço; a atualização fica dentro dele.
nivel = 6
while nivel > 0:
print(nivel)
nivel = nivel - 2
print("Fim")
Cada atualização subtrai 2. Ao testar 0 > 0, o resultado é falso: o laço termina e o programa exibe Fim.
O trecho abaixo está incompleto. A cada passagem, a energia deve diminuir exatamente 3 unidades.
energia = 9
while energia > 0:
print(energia)
energia = ____
print("Energia esgotada")Complete somente o trecho depois de energia =, usando a variável atual e uma subtração.
No exemplo da energia, por que energia = 9 fica antes do while e energia = energia - 3 fica dentro do corpo? Explique também qual valor faz a condição energia > 0 se tornar falsa.
Escreva pelo menos 30 caracteres (0/30).

Passo 3 de 6
Preveja quantas vezes o corpo de um while executa, o que aparece na tela e qual valor permanece ao terminar.
O teste inicial pode impedir até a primeira execução. No programa abaixo, compare o que acontece ao começar com nivel igual a 0, 1 ou 3. Quando a condição fica falsa, a execução segue para o print após o laço.
nivel = 3
while nivel > 0:
print("Nível:", nivel)
nivel = nivel - 1
print("Final:", nivel)
Cada seta representa uma execução do corpo e sua subtração. Nos três casos, o valor final é 0 e o programa exibe Final: 0. Se começar em 0, não exibe nenhuma linha Nível.
Mantenha nivel = 3 e o mesmo corpo do programa anterior, que diminui o nível em 1. Altere apenas a condição do while e associe cada versão ao resultado.
Toque em um item e depois no par correspondente.
O while não refaz o teste no meio do corpo. Neste exemplo, a subtração muda nivel para 0, mas o print indentado ainda executa e exibe Nível: 0. Só depois o fluxo volta à condição, que fica falsa. Por fim, aparece Final: 0.
nivel = 1
while nivel > 0:
nivel = nivel - 1
print("Nível:", nivel)
print("Final:", nivel)Leia o programa sem executá-lo primeiro.
nivel = 3
while nivel > 1:
nivel = nivel - 1
print("Nível:", nivel)
print("Final:", nivel)Quais linhas aparecem, na ordem? Informe também quantas vezes o corpo executa, o valor final de nivel e por que o print do corpo ainda executa quando o nível chega ao limite.
Escreva pelo menos 20 caracteres (0/20).

Passo 4 de 6
Identifique atualizações que não levam à saída e pratique a interrupção de um script com Ctrl+C no terminal.
Um laço infinito continua repetindo porque sua condição permanece verdadeira.
Imagine energia = 3 antes de while energia > 0:. Estes quatro problemas impedem a saída:
energia, sem mudar seu valor.aviso, mas não muda energia.energia = energia + 1 afasta o valor da saída.energia = 3.A pergunta não é apenas “algum valor mudou?”, mas “a mudança permite que a condição se torne falsa?”

De cima para baixo, os quatro problemas descritos. Nenhuma sequência chega a um teste falso de energia > 0.
A atualização energia = energia + 1 não permite encerrar este laço. Preencha a lacuna com o operador que corrige o problema:
energia = 3
while energia > 0:
energia = energia ___ 1
print("Fim")Atenção
O primeiro código abaixo contém um laço infinito intencional. Assim que executá-lo, mantenha o foco no terminal e pressione Ctrl+C: segure Ctrl e aperte C. Não deixe o script rodando enquanto lê o restante da tela.
laco.py.python laco.py — ou python3 laco.py ou py laco.py, conforme seu ambiente.KeyboardInterrupt; isso é esperado nessa interrupção.O laço não imprime nada enquanto repete. Mesmo sem novas linhas na tela, ele continua executando.
A condição permanece verdadeira porque energia recebe 3 em toda passagem.
energia = 3
while energia > 0:
energia = 3
print("Fim")Interromper o processo não corrige o arquivo. Após confirmar o retorno ao prompt, substitua o conteúdo por este código, salve e execute novamente. Agora deve aparecer Fim uma única vez, seguido do prompt, sem precisar de Ctrl+C.
energia = 3
while energia > 0:
energia = energia - 1
print("Fim")Relate o que você observou nas duas execuções: o prompt voltou após Ctrl+C? Apareceu KeyboardInterrupt? Depois da correção, apareceu Fim sem usar Ctrl+C? Explique por que a nova atualização permite encerrar o laço. Se não conseguiu executar localmente, diga isso e descreva o resultado esperado.
Escreva pelo menos 30 caracteres (0/30).

Passo 5 de 6
Organize a leitura e a atualização de textos para encerrar uma repetição quando o usuário digitar sair.
Um valor sentinela é um valor reservado para indicar o fim da leitura. Aqui, será o texto sair.
A primeira leitura acontece antes do while, para que a condição tenha um valor a consultar. Enquanto mensagem != "sair" for verdadeira, o programa exibe a mensagem e lê outra entrada, atualizando a mesma variável.
mensagem = input("Mensagem (sair para encerrar): ")
while mensagem != "sair":
print("Recebida:", mensagem)
mensagem = input("Próxima mensagem (sair para encerrar): ")
print("Leitura encerrada.")
Toda entrada passa pelo teste antes de ser exibida. Por isso, sair não aparece como uma mensagem recebida.
Ordene as linhas para reconstruir o programa. As duas linhas com recuo pertencem ao corpo do while; a mensagem final fica fora dele.
Neste programa, apenas sair encerra a leitura. Maiúsculas, minúsculas e espaços fazem diferença:
sair: encerra, sem ser exibido como mensagem recebida.Sair: é exibido como uma mensagem comum.sair , com um espaço no final: também é exibido como uma mensagem comum.Se a primeira entrada já for sair, o corpo é ignorado e a mensagem final aparece.
Exemplo
Mensagem (sair para encerrar): Olá
Recebida: Olá
Próxima mensagem (sair para encerrar): Sair
Recebida: Sair
Próxima mensagem (sair para encerrar): sair
Leitura encerrada.
Dica
A nova leitura permite que a condição se torne falsa, mas o encerramento depende de o usuário digitar exatamente sair. Se ele continuar enviando outros textos, o programa continuará repetindo.
Imagine que a primeira entrada foi Olá. Se removermos apenas a nova leitura de dentro do while, mantendo o restante do programa, o que acontecerá?

Passo 6 de 6
Execute um programa no seu computador, confira três cenários e explique como a repetição termina.
No seu editor, crie o arquivo mensagens.py com o programa abaixo. Ele deve exibir cada mensagem recebida, pedir outra e encerrar quando você digitar exatamente sair, sem exibir a sentinela como mensagem recebida.
Antes de executar, localize a condição, a nova leitura dentro do corpo e a mensagem final fora dele.
Salve o arquivo. No terminal, na pasta em que ele foi salvo, execute python mensagens.py — ou python3 mensagens.py ou py mensagens.py, conforme seu ambiente.
mensagem = input("Mensagem (sair para encerrar): ")
while mensagem != "sair":
print("Recebida:", mensagem)
mensagem = input("Próxima mensagem (sair para encerrar): ")
print("Leitura encerrada.")Faça os três testes abaixo, iniciando o programa novamente a cada teste. Digite uma entrada por vez e pressione Enter.
Compare seu terminal com os exemplos completos. Confira que Sair é processado, mas sair nunca aparece depois de Recebida:. Em cada execução do programa, Leitura encerrada. deve aparecer uma única vez, seguida do retorno ao prompt.
Exemplo
Teste 1 — nenhuma execução do corpo
Digite apenas sair.
Mensagem (sair para encerrar): sair
Leitura encerrada.Teste 2 — uma execução do corpo
Digite Olá e depois sair.
Mensagem (sair para encerrar): Olá
Recebida: Olá
Próxima mensagem (sair para encerrar): sair
Leitura encerrada.Teste 3 — duas execuções do corpo
Digite Olá, depois Sair e, por último, sair.
Mensagem (sair para encerrar): Olá
Recebida: Olá
Próxima mensagem (sair para encerrar): Sair
Recebida: Sair
Próxima mensagem (sair para encerrar): sair
Leitura encerrada.
Conte os blocos de mensagem recebida: zero, um e dois. A mensagem final fica fora da repetição.
Depois dos testes, relate:
Recebida: apareceram em cada cenário? A mensagem final apareceu uma única vez e o prompt voltou?sair na primeira leitura produz zero execuções do corpo?Não é necessário enviar arquivos. Se não conseguiu executar localmente, informe isso e descreva os resultados esperados, separando previsão de observação.
Escreva pelo menos 100 caracteres (0/100).
Resumo
Ao revisar um while, localize estes pontos:
Parabéns! Você concluiu: Repetir ações com while
Milhares de cursos online em vídeo, ebooks e áudiobooks.
Para testar seus conhecimentos no decorrer dos cursos online
Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail
Baixe nosso aplicativo pelo QR Code ou pelos links abaixo:.
+ de 10 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks