Importante

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!

1
resposta

Loop Infinito

No exemplo apresentado, o problema ocorre porque o laço while nunca altera a condição que controla sua execução. A variável contador é inicializada com valor 0 e permanece com esse valor durante todo o processo. Como a condição contador < 10 continua verdadeira, o programa entra em um loop infinito e nunca encerra sua execução.

Código com problema:

contador = 0

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

Para corrigir, é necessário atualizar o valor do contador dentro do laço:

contador = 0

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

Para compreender melhor o conceito, adaptei o exemplo para um contexto educacional utilizando dados da Avaliação Formativa do Aprendiz (AFA).

Imagine que a escola deseja continuar propondo intervenções enquanto existirem alunos com registros recorrentes de conversa excessiva.

alunos_com_conversa_excessiva = [
    "Anik Azevedo",
    "Aluno 2",
    "Aluno 3"
]

while len(alunos_com_conversa_excessiva) > 0:

    print("Ainda existem alunos com conversa excessiva.")
    print("Propondo intervenções pedagógicas...")

    for aluno in alunos_com_conversa_excessiva:
        print(f"Intervenção para {aluno}:")
        print("- conversa individual")
        print("- meta semanal de autorregulação")
        print("- monitoramento pela coordenação")

    break

Nesse exemplo, o while representa a condição:

"Enquanto houver alunos com conversa excessiva, continue realizando intervenções."

Já o for percorre cada aluno que apresenta a necessidade de acompanhamento.

Com essa atividade, compreendi que o loop infinito acontece quando a condição de parada nunca é modificada. Também percebi que, em projetos educacionais, o while pode ser utilizado para monitorar problemas ao longo do tempo, enquanto o for é utilizado para percorrer listas de alunos, turmas ou registros e realizar análises individuais.

1 resposta

Oi, Patricia! Tudo bem?

Sobre o tópico Loop Infinito no curso Praticando Python: laços for e while, você relacionou muito bem a ideia de condição de parada com um exemplo educacional. Agradeço por compartilhar seu código com a comunidade Alura.

Gostei de como você mostrou a diferença entre o while, usado para manter uma repetição enquanto uma condição for verdadeira, e o for, usado para percorrer cada item da lista.

Uma dica interessante para o futuro é trocar o break por uma alteração real na lista, simulando que cada aluno foi acompanhado e removido do monitoramento:


alunos_com_conversa_excessiva = ["Anik Azevedo", "Aluno 2", "Aluno 3"]

while len(alunos_com_conversa_excessiva) > 0:
    aluno = alunos_com_conversa_excessiva.pop(0)
    print(f"Intervencao para {aluno}")
    print("Aluno acompanhado e removido da lista")

Esse código usa pop(0) para retirar um aluno da lista a cada repetição, fazendo com que a condição do while mude até o laço encerrar. Você acha que esse tipo de adaptação ajudaria a representar melhor o acompanhamento dos alunos ao longo do tempo?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!