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.

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>
KeyboardInterrupt

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