1
resposta

O que é um loop infinito?

André está testando um novo recurso no back-end do Buscante que processa dados em um loop. Durante os testes, ele percebeu que o sistema parou de responder, e suspeita que o problema está em um loop infinito.

contador = 0

while contador < 10:
    print("Processando dados...")

Qual é o problema do código de André e como resolver?

Como o valor da variável contador não é atualizado dentro do loop, a condição contador < 10 é sempre verdadeira, o que resulta em um loop infinito. Para resolver esse problema, é necessário incrementar o valor de contador dentro do loop para que a condição contador < 10 se torne falsa e o loop seja finalizado, como no código abaixo:

contador = 0

while contador < 10:
    print("Processando dados...")
    contador += 1  

Processando dados...
Processando dados...
Processando dados...
Processando dados...
Processando dados...
Processando dados...
Processando dados...
Processando dados...
Processando dados...
Processando dados...
1 resposta

Olá, Andressa. Como vai?

O diagnóstico que você apresentou está corretíssimo. Esse é um dos problemas mais comuns quando começamos a trabalhar com a estrutura while em qualquer linguagem de programação, incluindo o Python.

Como o laço while depende de uma condição que precisa se tornar falsa em algum momento para que a repetição pare, esquecer de atualizar a variável de controle (neste caso, o contador) faz com que o programa fique preso na mesma instrução para sempre, consumindo recursos do sistema e travando a aplicação.

Para complementar os seus estudos e agregar ainda mais valor ao seu aprendizado sobre laços em Python, existem duas boas práticas interessantes para observar nesse cenário:

**1. A alternativa com o laço for**
Quando nós já sabemos exatamente a quantidade de vezes que precisamos repetir um bloco de código (que é o caso do exemplo do André, onde ele quer repetir 10 vezes), a boa prática em Python é dar preferência ao laço for utilizando a função range(). O for gerencia o incremento de forma automática, eliminando o risco de esquecermos de atualizar a variável e gerarmos um loop infinito por acidente.

Veja como o mesmo código ficaria mais limpo e seguro:

for contador in range(10):
    print("Processando dados...")

2. O uso do while com segurança
O laço while deve ser utilizado principalmente quando não sabemos de antemão quantas vezes o código será executado (por exemplo, ler dados de um banco até que eles acabem, ou esperar o usuário digitar uma palavra específica).

Se por algum motivo o André precisasse usar o while com uma condição de parada dinâmica, outra forma de evitar travamentos é utilizar uma instrução de quebra (break) combinada com um limite de segurança, caso a condição principal demore muito para ser atingida.

Parabéns pela análise detalhada do problema e pela solução apresentada!

Espero que possa ter lhe ajudado!