Módulo 8 - Repetições com while
Loop infinito: como evitar, como reconhecer e como parar
9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Entender por que esquecer a atualização cria um loop infinito.
- Reconhecer os sinais de um programa preso em repetição sem fim.
- Parar um loop travado: Ctrl+C no terminal e o botão parar no Playground.
- Usar o break como saída de emergência legítima de um loop.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Loop infinito: como evitar, como reconhecer e como parar.
Os objetivos desta aula. Entender por que esquecer a atualização cria um loop infinito. Reconhecer os sinais de um programa preso em repetição sem fim. Parar um loop travado: Ctrl+C no terminal e o botão parar no Playground. Usar o break como saída de emergência legítima de um loop.
Veja o essencial, parte por parte.
O clássico: esquecer o incremento. Loop infinito é o while cuja condição nunca vira falsa; o programa repete para sempre.
Reconhecendo o travamento e puxando o freio. Todo programador do planeta já criou um loop infinito sem querer, incluindo quem escreveu o Python.
break: a saída de emergência legítima. Nem toda repetição sem fim é acidente.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
O clássico: esquecer o incremento
A aula passada terminou com uma regra: a atualização da variável de controle empurra a condição para o falso. Agora veja o que acontece quando essa linha some. O código abaixo é o loop das três voltas com um único detalhe removido, e esse detalhe muda tudo. Leia antes de rodar, e se for testar, saiba parar (a próxima seção ensina).
# CUIDADO: loop infinito de propósito. NÃO rode sem saber parar (Ctrl+C).
contador = 1
while contador <= 3:
print("Volta número", contador)
# Faltou o contador = contador + 1: contador fica em 1 para sempre.Sem a atualização, contador vale 1 em todos os testes. A condição 1 <= 3 é eternamente verdadeira.
Faça o teste de mesa e a tragédia fica evidente: na volta 1, contador vale 1 e a condição é verdadeira. Na volta 2, contador ainda vale 1. Na volta 1000, idem. Nada dentro do bloco mexe na variável, então o teste dá o mesmo resultado até o fim dos tempos. A tela enche de Volta número 1 em velocidade absurda e o programa nunca chega ao fim. Não é o computador que quebrou; ele está obedecendo com perfeição uma ordem mal dada.
Reconhecendo o travamento e puxando o freio
Como saber que o seu programa caiu num loop infinito? Os sintomas são característicos. Se o loop tem print, a tela rola sem parar, repetindo a mesma mensagem. Se não tem, o sintoma é o oposto e mais traiçoeiro: o programa fica mudo, o cursor parado, nada acontece e nada termina. Nos dois casos, o processo está vivo e trabalhando a toda velocidade; ele só nunca vai chegar ao fim sozinho.
A boa notícia: parar é simples, e nenhum loop infinito danifica o computador. No terminal, pressione Ctrl+C (a tecla Ctrl junto com a letra C). O Python interrompe o programa na hora e mostra a mensagem KeyboardInterrupt, que significa exatamente isso: interrompido pelo teclado. No Playground do curso, use o botão de parar a execução, que cumpre o mesmo papel. Anote esse atalho em algum lugar visível; você vai precisar dele, e provavelmente ainda nesta semana.
Volta número 1
Volta número 1
Volta número 1
^C
Traceback (most recent call last):
File "programa.py", line 3, in <module>
KeyboardInterruptUm loop infinito parado com Ctrl+C no terminal. O ^C marca o momento do resgate; KeyboardInterrupt confirma.
break: a saída de emergência legítima
Nem toda repetição sem fim é acidente. Às vezes você QUER um loop que rode indefinidamente, mas com uma porta de saída controlada por dentro. Para isso existe o break: um comando que, ao ser executado, mata o loop na hora e leva o programa para a primeira linha depois do bloco. A condição do while nem é consultada; o break tem a palavra final.
while True:
resposta = input("Digite sair para encerrar: ")
if resposta == "sair":
print("Encerrando o programa.")
break
print("Você digitou:", resposta)
print("Programa encerrado.")while True repete para sempre de propósito; o break dentro do if é a única porta de saída.
Olhe a primeira linha: while True. Como True é sempre verdadeiro, a condição nunca falha e o loop, em tese, seria infinito. A diferença entre esse código e o acidente da primeira seção é a intenção somada à saída: existe um if lá dentro que, na situação certa, dispara o break. O loop roda quantas voltas o usuário quiser e termina no momento exato em que ele digita sair. Repetição sob controle.
Esse desenho, while True com break na condição de saída, é um dos padrões mais usados de toda a linguagem, e é a fundação do menu interativo das aulas 5 e 6. Antes de chegar lá, porém, falta uma peça: aprender a contar e a somar dentro do loop. É o assunto da próxima aula, com os contadores e acumuladores.
Teste rápido
Um while imprime a mesma mensagem sem parar. Qual é a causa mais provável?
Perguntas frequentes
- Loop infinito pode estragar o meu computador?
- Não. Ele só mantém o processador ocupado repetindo o bloco, e o sistema operacional segue no controle. Basta interromper com Ctrl+C no terminal (ou parar a execução no Playground) e tudo volta ao normal. Nenhum arquivo é danificado.
- O que significa a mensagem KeyboardInterrupt?
- É o Python avisando que o programa foi interrompido pelo teclado, ou seja, pelo seu Ctrl+C. Não é um defeito do código: é a confirmação de que o resgate funcionou. A mensagem indica até a linha em que o programa estava quando você o parou.
- E se o Ctrl+C não funcionar?
- Em casos raros, o terminal demora a reagir; pressione Ctrl+C mais uma vez. Se o programa seguir vivo, feche a janela do terminal, que encerra tudo que rodava nela. No Playground, recarregar a página tem o mesmo efeito. Nada disso afeta os seus arquivos.
- Usar while True é considerado errado?
- Não, desde que exista uma saída clara com break lá dentro. O padrão while True com break é idiomático em Python e aparece na documentação oficial, em menus, jogos e servidores. Errado é o loop sem nenhuma porta de saída, esse sim um bug.
- O break sai de todos os loops de uma vez?
- Não, ele encerra apenas o loop mais interno em que está. Se houver um while dentro de outro, o break do loop de dentro devolve o controle para o de fora. Loops aninhados aparecem com calma mais adiante na trilha; por ora, um break, um loop.
- Existe também o continue. O que ele faz?
- O continue pula o resto da volta atual e vai direto para o próximo teste da condição, sem encerrar o loop. É o irmão menos usado do break. Este curso o apresenta de novo no módulo 9, com o for, onde os exemplos ficam mais naturais.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.