🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

Entendendo Loops em Python com as declarações for e while

Para executar Python no prompt de comando ou PowerShell no seu PC, é necessário baixar e instalar o Python.
Se ainda não o fez, consulte o artigo Instalação do Python e configuração do ambiente de desenvolvimento para instalar o Python.

Olá, criadores da web! Você já sentiu que está fazendo a mesma tarefa repetidamente na criação de seu site ou no trabalho diário? É aí que o "processamento repetitivo (loops)" da programação entra para automatizar essas tarefas tediosas.

Neste artigo, preparamos muito "código funcional" para o processamento repetitivo básico do Python, a declaração for e a declaração while, que até mesmo os iniciantes podem experimentar imediatamente. O objetivo é primeiro experimentar "fazê-lo funcionar". A teoria virá depois. Sinta-se à vontade para copiar e colar o código e experimentar a conveniência dos loops!


1. Declaração for: Ótima para repetir um número fixo de vezes!

A declaração for é boa para pegar elementos um por um em ordem de uma coleção de dados, como uma lista ou string, e processá-los. Também é usada para processar um número predeterminado de vezes, como "repetir 10 vezes".

A forma mais básica é for variavel in colecao_de_dados:. Vamos dar uma olhada em um código específico imediatamente.

Recuperando Elementos de uma Lista em Ordem

Por exemplo, digamos que você tenha uma lista de categorias para um site que você gerencia. Vamos exibir esses nomes de categoria um por um.


# Crie uma lista de nomes de categoria para exibir
categories = ["HTML", "CSS", "JavaScript", "Python", "Web Design"]

# Use um loop for para recuperar elementos um por um da lista e exibi-los na tela
for category in categories:
  print(f"Nome da Categoria: {category}")

# Resultado da Execução:
# Nome da Categoria: HTML
# Nome da Categoria: CSS
# Nome da Categoria: JavaScript
# Nome da Categoria: Python
# Nome da Categoria: Web Design
    

Repetindo um Número Fixo de Vezes (função range)

Se você simplesmente deseja repetir um processo um número fixo de vezes, como "criar 5 postagens de blog de amostra", a função range() é conveniente. Escrever range(5) gera números de 0 a 4 em ordem (o ponto principal é que não inclui 5!).


# Faça um loop um total de 5 vezes, de 0 a 4
for i in range(5):
  # Use uma f-string para exibir qual loop é (adicione 1, pois i começa em 0)
  print(f"Este é o {i + 1}º processo.")

# Resultado da Execução:
# Este é o 1º processo.
# Este é o 2º processo.
# Este é o 3º processo.
# Este é o 4º processo.
# Este é o 5º processo.
    

Repetindo Enquanto Sabe o Número do Elemento (função enumerate)

Ao recuperar elementos de uma lista, você também pode querer saber "qual é o número do elemento agora". Nesse caso, use a função enumerate(). É útil para exibir coisas em formato de ranking.


# Lista de rankings de artigos populares
ranking = ["Introdução ao Python", "Design Responsivo com CSS", "Processamento Assíncrono em JavaScript"]

# Use enumerate para recuperar a classificação (índice) e o título do artigo (elemento) ao mesmo tempo
# Ao definir start=1, a classificação pode começar em 1
for rank, title in enumerate(ranking, start=1):
  print(f"{rank}º: {title}")

# Resultado da Execução:
# 1º: Introdução ao Python
# 2º: Design Responsivo com CSS
# 3º: Processamento Assíncrono em JavaScript
    

2. Declaração while: Repetindo Enquanto uma Condição Específica é Atendida

A declaração while é um tipo de loop que "continua o processamento enquanto esta condição for verdadeira (True)". Ao contrário da declaração for, ela é frequentemente usada quando o número de repetições não é fixo. Por exemplo, é útil em programas interativos, como "continuar o processamento até que o usuário insira um caractere específico" ou em casos como "continuar até que o tempo de processamento exceda 10 segundos".

A forma básica é while condicao:. O processo interno continua a ser executado enquanto a condição for True.

Repetindo até que um Contador Atinja um Número Específico

Primeiro, um exemplo simples. Prepare uma variável de contador e continue o loop apenas enquanto esse número atender a uma condição específica. Tenha cuidado, pois esquecer de alterar o valor do contador no loop pode levar a um loop infinito (descrito posteriormente).


# Inicialize a variável do contador para 0
count = 0

# Continue o loop enquanto a contagem for menor que 5
while count < 5:
  print(f"Contagem atual: {count}")
  # Esta linha é importante! Incremente o valor da contagem em 1
  count += 1

print("O loop terminou.")

# Resultado da Execução:
# Contagem atual: 0
# Contagem atual: 1
# Contagem atual: 2
# Contagem atual: 3
# Contagem atual: 4
# O loop terminou.
    

3. Exemplo Aplicado: Vamos Gerar um Arquivo HTML com Processamento de Loop

Agora, vamos aplicar o conhecimento que adquirimos até agora a um exemplo mais prático para criadores da web. Este é um programa que gera automaticamente o código HTML para o menu de navegação de um site usando o processamento de loop do Python.

Quando você executa este código, um arquivo chamado `navigation.html` será criado e um menu em estilo de lista será escrito dentro dele. Isso economiza o trabalho de escrever muitas tags <li> manualmente!

[Exemplo de HTML completo e funcional]
O código a seguir é o próprio script Python. Se você tiver o Python instalado em seu ambiente local, poderá salvar este código com um nome como `generate_html.py` e executar `python generate_html.py` em seu terminal ou prompt de comando, e `navigation.html` será gerado no mesmo diretório.


# -*- coding: utf-8 -*-

# Lista de itens a serem exibidos no menu
menu_items = {
  "Início": "index.html",
  "Sobre Nós": "about.html",
  "Serviços": "services.html",
  "Blog": "blog.html",
  "Contato": "contact.html"
}

# Variável para armazenar fragmentos de HTML
html_content = """<!DOCTYPE html>
<html lang="pt">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Navegação Gerada Automaticamente</title>
  <style>
    body { font-family: sans-serif; }
    nav ul { list-style: none; padding: 0; display: flex; gap: 1rem; }
    nav a { text-decoration: none; color: #007BFF; padding: 0.5rem 1rem; border: 1px solid #ddd; border-radius: 5px; }
    nav a:hover { background-color: #f0f0f0; }
  </style>
</head>
<body>

  <h1>Menu de Navegação</h1>
  <nav>
    <ul>
"""

# Use um loop for para recuperar a chave (texto) e o valor (link) do dicionário e gerar tags <li>
for text, link in menu_items.items():
  html_content += f'      <li><a href="{link}">{text}</a></li>\n'

# Adicione a parte do rodapé do HTML
html_content += """    </ul>
  </nav>

</body>
</html>
"""

# Abra um arquivo chamado "navigation.html" e escreva o conteúdo nele
try:
  with open("navigation.html", "w", encoding="utf-8") as f:
    f.write(html_content)
  print("✅ navigation.html gerado com sucesso!")
except IOError as e:
  print(f"❌ Ocorreu um erro ao escrever o arquivo: {e}")

    

4. Pontos a serem observados: Técnicas de Controle de Loop

O processamento de loop é muito conveniente, mas existem alguns métodos de controle que você deve conhecer para evitar comportamentos indesejados. Em particular, "loops infinitos", "break" e "continue" são conceitos importantes.

Cuidado com os Loops Infinitos!

Um "loop infinito" é particularmente provável de ocorrer com a declaração while. Este é um fenômeno em que o programa para de responder porque a condição para sair do loop permanece True para sempre. No exemplo abaixo, o valor de count não muda, então a condição count < 5 é permanentemente atendida.


# ⚠️ Tenha cuidado ao executar este código, pois ele resultará em um loop infinito!
count = 0
while count < 5:
  print("Esta mensagem será exibida infinitamente...")
  # O processo para atualizar o valor da contagem (como count += 1) está faltando!
    

Saindo de um Loop no Meio (break)

No meio de um loop, você pode querer encerrar completamente o processo se uma determinada condição for atendida. Nesse caso, use break. Por exemplo, se você encontrar um elemento específico em uma lista, não precisará procurar mais. É aí que o break é útil.


# Arquivo a ser procurado
target_file = "python.png"
file_list = ["style.css", "index.html", "script.js", "python.png", "logo.svg"]

# Verifique a lista de arquivos em ordem
for filename in file_list:
  print(f"Verificando: {filename}")
  if filename == target_file:
    print(f"🎉 Encontrado!: {target_file}")
    # O arquivo de destino foi encontrado, então saia do loop
    break

# Resultado da Execução:
# Verificando: style.css
# Verificando: index.html
# Verificando: script.js
# Verificando: python.png
# 🎉 Encontrado!: python.png
    

Você pode ver que quando break é executado, o loop termina sem verificar "logo.svg".


Ignorando Apenas o Processo Atual (continue)

Enquanto break encerra o próprio loop, continue é um comando para "ignorar apenas o processo atual e prosseguir para a próxima iteração". Por exemplo, é útil quando você deseja processar apenas arquivos de imagem (.jpg, .png) de um grande número de arquivos.


file_list = ["memo.txt", "photo_01.jpg", "document.pdf", "photo_02.png", "archive.zip"]

# Faça um loop pela lista de arquivos
for filename in file_list:
  # Se o nome do arquivo não terminar com ".jpg" ou ".png"...
  if not (filename.endswith(".jpg") or filename.endswith(".png")):
    # ...ignore este processo e vá para o próximo arquivo
    continue
  
  # Esta linha só é executada para arquivos de imagem
  print(f"Processando arquivo de imagem: {filename}")

# Resultado da Execução:
# Processando arquivo de imagem: photo_01.jpg
# Processando arquivo de imagem: photo_02.png
    

Resumo

Neste artigo, explicamos o básico do processamento repetitivo do Python, a declaração for e a declaração while.

Pode parecer difícil no início, mas comece copiando e colando para fazê-lo funcionar, depois altere gradualmente os números, altere o conteúdo da lista e observe as mudanças no comportamento. Se você dominar o processamento repetitivo, sua produção na web e seu trabalho se tornarão muito mais eficientes!


Como próximo passo, por que não aprender sobre "funções" que agrupam processos?

Como Criar e Usar Funções em Python