contador = 0
while contador < 10:
print("Processando dados...")
contador += 1 # o bug esta na falta de um contador pra controlar a condição do loop, solução incrementar o contador
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
contador = 0
while contador < 10:
print("Processando dados...")
contador += 1 # o bug esta na falta de um contador pra controlar a condição do loop, solução incrementar o contador
Olá, Marcelo. Como vai?
O seu código e o seu diagnóstico estão perfeitos! Você identificou e corrigiu o calcanhar de Aquiles do laço while: a condição de parada.
Se a linha contador += 1 (o incremento) fosse esquecida, o contador permaneceria eternamente valendo 0. Como $0 < 10$ é uma verdade absoluta que nunca mudaria, o Python entraria em um estado de execução perpétua, imprimindo "Processando dados..." até estourar a memória ou o usuário forçar a interrupção do programa.
Para visualizar de forma simples, o laço while funciona como um portão com uma sentinela. Ele faz uma pergunta antes de cada rodada.
Com o seu código corrigido, o fluxo na memória ganha um fim claro:
contador é 0. $0 < 10$? Sim. Roda o bloco. contador vira 1.contador é 1. $1 < 10$? Sim. Roda o bloco. contador vira 2.contador é 9. $9 < 10$? Sim. Roda o bloco. contador vira 10.contador é 10. $10 < 10$? Não! O laço quebra e o programa segue em frente.No mercado, existem situações onde nós queremos criar um loop infinito de propósito. Por exemplo, o sistema de um caixa eletrônico de banco ou o menu de um jogo de videogame precisam ficar rodando para sempre até que o usuário decida clicar em "Sair".
Nesses casos, a boa prática é usar o while True combinado com a instrução break que você já praticou em outros exercícios. Veja uma estrutura muito comum em sistemas reais:
while True:
comando = input("Digite 'sair' para encerrar o sistema: ")
if comando.strip().lower() == "sair":
print("Encerrando o programa com segurança...")
break # É o break que garante que o loop infinito não trave a máquina
print("Executando tarefa do sistema...")
Parabéns por mais essa excelente postagem de correção no fórum, Marcelo! Entender a mecânica interna do while evita muitos travamentos de servidores na vida real.
Espero que possa ter lhe ajudado!
Eu aprendi o loop infinito para entradas de menu em CLI e também loop de jogos exatamente como falou.