Trilha de aprendizado · Nível 2 · Tutorial 4

Repetir ações com while

Criar repetições controladas por uma condição e garantir que o estado do programa permita encerrá-las.

  • Nível: Iniciante
  • Duração: 20 min
  • 6 passos
Repetir ações com while

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.

Uma condição que volta a ser testada

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.

Observe a estrutura

python
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.

Siga as setas

O teste acontece antes de cada execução do corpo:

  • Se o resultado for verdadeiro, o fluxo entra no corpo e, ao terminar, retorna à condição.
  • Se for falso, o fluxo segue para o trecho após o laço.

No exemplo, 25 > 30 é falso. Por isso, o programa segue diretamente para print("Fora do laço").

O caminho de volta é essencial

Fluxograma: a condição temperatura > 30 é testada primeiro. A seta Verdadeiro leva ao corpo, que exibe Acima do limite, e uma seta retorna à condição. A seta Falso leva ao trecho após o laço, que exibe Fora do laço.

Terminar o corpo não significa sair do while: o próximo destino é o teste da condição.

Qual caminho o programa segue?

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

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.

Um valor que muda a cada passagem

Inicializar, testar e atualizar

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.

Diminuir até chegar ao limite

A definição inicial fica fora do laço; a atualização fica dentro dele.

python
nivel = 6
while nivel > 0:
    print(nivel)
    nivel = nivel - 2
print("Fim")

O estado se aproxima da saída

Sequência dos valores de nivel nos testes: 6, 4, 2 e 0. Os três primeiros são maiores que zero e permitem entrar no corpo. Com zero, a condição é falsa e o fluxo segue para a saída.

Cada atualização subtrai 2. Ao testar 0 > 0, o resultado é falso: o laço termina e o programa exibe Fim.

Complete a atualização

Energia disponível

O trecho abaixo está incompleto. A cada passagem, a energia deve diminuir exatamente 3 unidades.

python
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.

Explique por que termina

Inicialização não é atualizaçã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

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.

O valor inicial muda o percurso

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.

python
nivel = 3

while nivel > 0:
    print("Nível:", nivel)
    nivel = nivel - 1

print("Final:", nivel)
Três percursos de valores: começando em 0, nenhuma execução; começando em 1, uma execução leva a 0; começando em 3, três execuções levam de 3 para 2, depois 1 e finalmente 0.

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.

O limite também faz diferença

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.

A atualização não corta o corpo

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.

Agora o print vem depois da atualização

python
nivel = 1

while nivel > 0:
    nivel = nivel - 1
    print("Nível:", nivel)

print("Final:", nivel)

Preveja a saída completa

Leia o programa sem executá-lo primeiro.

python
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

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.

Mudar um valor não basta

Por que o laço não termina?

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:

  • Atualização ausente: o corpo apenas exibe energia, sem mudar seu valor.
  • Outra variável é alterada: o corpo muda aviso, mas não muda energia.
  • Direção errada: energia = energia + 1 afasta o valor da saída.
  • Valor inicial restaurado: o corpo subtrai 1, mas depois faz energia = 3.

A pergunta não é apenas “algum valor mudou?”, mas “a mudança permite que a condição se torne falsa?”

Quatro sequências de valores de energia nos testes do while: sem atualização, 3 → 3 → 3; alterando outra variável, 3 → 3 → 3; aumentando energia, 3 → 4 → 5; subtraindo e depois restaurando o valor inicial, 3 → 3 → 3. Todos os valores continuam maiores que zero.

De cima para baixo, os quatro problemas descritos. Nenhuma sequência chega a um teste falso de energia > 0.

Corrija a direção

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")

Pratique a parada no seu terminal

Atenção

Conheça a parada antes de executar

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.

Execute, interrompa e confira

  1. No seu editor, salve o primeiro código como laco.py.
  2. No terminal, na pasta do arquivo, execute python laco.py — ou python3 laco.py ou py laco.py, conforme seu ambiente.
  3. Pressione Ctrl+C prontamente no terminal que está executando o script.
  4. Confirme que o prompt do terminal voltou, pronto para receber comandos. Pode aparecer KeyboardInterrupt; isso é esperado nessa interrupção.

O laço não imprime nada enquanto repete. Mesmo sem novas linhas na tela, ele continua executando.

Primeira execução: interrompa com Ctrl+C

A condição permanece verdadeira porque energia recebe 3 em toda passagem.

python
energia = 3
while energia > 0:
    energia = 3
print("Fim")

Depois da parada: corrija e execute novamente

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.

python
energia = 3
while energia > 0:
    energia = energia - 1
print("Fim")

Confirme o que aconteceu

Interromper não é corrigir

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

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.

Um texto reservado para encerrar

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.

Ler, testar, exibir e ler novamente

python
mensagem = input("Mensagem (sair para encerrar): ")

while mensagem != "sair":
    print("Recebida:", mensagem)
    mensagem = input("Próxima mensagem (sair para encerrar): ")

print("Leitura encerrada.")

O caminho de cada entrada

Fluxo: primeira leitura, teste mensagem diferente de sair. Se verdadeiro, exibir a mensagem, ler outra entrada na mesma variável e voltar ao teste. Se falso, seguir para a mensagem final.

Toda entrada passa pelo teste antes de ser exibida. Por isso, sair não aparece como uma mensagem recebida.

Monte a sequência

Ordene as linhas para reconstruir o programa. As duas linhas com recuo pertencem ao corpo do while; a mensagem final fica fora dele.

  1. print("Leitura encerrada.")
  2. print("Recebida:", mensagem)
  3. mensagem = input("Mensagem (sair para encerrar): ")
  4. while mensagem != "sair":
  5. mensagem = input("Próxima mensagem (sair para encerrar): ")

A sentinela precisa ser exata

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

Uma conversa no terminal

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

Permitir a saída não é garantir a saída

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.

Por que ler dentro do corpo?

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

Aplicar e revisar: repetir até sair

Execute um programa no seu computador, confira três cenários e explique como a repetição termina.

Coloque o programa para funcionar

Prática no seu computador

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.

Programa completo

python
mensagem = input("Mensagem (sair para encerrar): ")

while mensagem != "sair":
    print("Recebida:", mensagem)
    mensagem = input("Próxima mensagem (sair para encerrar): ")

print("Leitura encerrada.")

Confira os três cenários

Execute novamente para cada teste

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

Entradas e saídas esperadas

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.

Compare as execuções do corpo

Comparação de três testes: sair na primeira leitura produz zero execuções do corpo; Olá seguido de sair produz uma; Olá, Sair e sair produzem duas. Sair é exibido como mensagem recebida, sair não é, e cada teste termina com uma única mensagem Leitura encerrada.

Conte os blocos de mensagem recebida: zero, um e dois. A mensagem final fica fora da repetição.

Registre e explique o resultado

Sua verificação

Depois dos testes, relate:

  1. Quais linhas Recebida: apareceram em cada cenário? A mensagem final apareceu uma única vez e o prompt voltou?
  2. Qual é a condição do laço e qual atualização permite encerrá-lo?
  3. Por que digitar sair na primeira leitura produz zero execuções do corpo?
  4. Se uma execução ficar presa, como você a interrompe, confirma a parada e se prepara para executar novamente?

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).

Revisão final

Resumo

Condição, atualização e saída

Ao revisar um while, localize estes pontos:

  • A condição é testada antes de cada execução do corpo: por isso ele pode executar nenhuma, uma ou várias vezes.
  • O corpo precisa atualizar o estado de modo que a condição possa se tornar falsa. Alterar um valor qualquer não basta.
  • Neste programa, a nova leitura atualiza mensagem; receber exatamente sair permite o encerramento normal.
  • A sentinela não é processada, e a mensagem final aparece uma única vez, após o laço.
  • Se a repetição ficar presa, Ctrl+C interrompe o script no terminal. Confirme o retorno ao prompt e corrija o código antes de executá-lo novamente.

Repetir ações com while

Parabéns! Você concluiu: Repetir ações com while

Tutorial concluído! Você praticou como controlar uma repetição, conferir seus resultados e distinguir o encerramento pela condição de uma interrupção manual.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso