Olá, Filipe. Como vai?
Parabéns por mais uma entrega impecável! Identificar e corrigir um loop infinito é um rito de passagem para qualquer programador, e sua explicação demonstra que você entendeu não apenas o erro, mas a lógica de controle que o evita.
Seu diagnóstico foi cirúrgico. Vamos reforçar os pontos técnicos que você aplicou na sua resposta:
1. O Conceito de Condição de Parada
Um laço while funciona como um "porteiro" que pergunta: "Ainda posso entrar?". Se a variável contador nunca muda, a resposta será sempre "sim". No seu código, você garantiu que o estado do programa mude a cada iteração, o que é essencial para que a condição de parada (contador < 10) seja eventualmente atingida.
2. A Atribuição Incrementadora
Ao adicionar a linha contador = contador + 1, você criou o que chamamos de atualização de estado.
- Antes: O loop era estático (0 sempre será menor que 10).
- Depois: O loop tornou-se dinâmico (0, 1, 2... 10).
3. Sintaxe Alternativa (Dica de Python)
Em Python, é muito comum simplificarmos o incremento usando o operador de atribuição combinada. Em vez de contador = contador + 1, você verá com frequência:
contador += 1
Ambas fazem exatamente a mesma coisa, mas a segunda forma é mais concisa e muito utilizada no dia a dia profissional.
Por que loops infinitos são perigosos?
Na prática, um loop infinito pode "travar" um programa ou consumir toda a memória e processamento do computador (CPU), pois o sistema tenta realizar uma tarefa infinitas vezes por segundo. Por isso, a validação que você fez é uma medida de segurança fundamental.
Com 35 posts e um entendimento sólido sobre laços, você está pronto para desafios cada vez maiores. Continue com esse foco, Filipe!
Espero que possa ter lhe ajudado!