Tutorial Completo Python 🐍

Dominando
Loops em Python

Do for básico ao list comprehension avançado — guia prático com exemplos reais e boas práticas.

11 Módulos
2 Tipos de Loop
3.x Versão Python
for loop while loop break / continue enumerate list comprehension zip / sum / max
01

🔁 O que são loops?

Loops (ou laços de repetição) servem para executar um bloco de código várias vezes, sem precisar repetir manualmente.

exemplo simples
for i in range(5):
    print(i)
saída
0
1
2
3
4
🧠
Python tem basicamente 2 tipos principais: for → quando você sabe quantas vezes quer repetir; while → quando você repete até uma condição parar de ser verdadeira.
02

🔹 Loop for

Usado quando você quer iterar sobre uma sequência (lista, string, dicionário, etc.).

estrutura básica
for variavel in sequencia:
    # código

Exemplo com lista:

nomes = ["Ana", "João", "Carlos"]

for nome in nomes:
    print(nome)

Percorrendo strings:

for letra in "Python":
    print(letra)

Usando índice com enumerate:

nomes = ["Ana", "João", "Carlos"]

for i, nome in enumerate(nomes):
    print(i, nome)
saída
0 Ana
1 João
2 Carlos

Loop em dicionários:

pessoa = {"nome": "Igor", "idade": 25}

for chave, valor in pessoa.items():
    print(chave, valor)
saída
nome Igor
idade 25
03

🔢 range()

A função range() gera uma sequência de números — essencial para loops com contagem.

sintaxe
range(inicio, fim, passo)
range(5)

0 até 4 (5 elementos)

range(1, 5)

1 até 4

range(0, 10, 2)

0, 2, 4, 6, 8 (passo 2)

range(5, 0, -1)

5, 4, 3, 2, 1 (decrescente)

exemplos
for i in range(5):
    print(i)              # 0 1 2 3 4

for i in range(1, 6):
    print(i)              # 1 2 3 4 5

for i in range(0, 10, 2):
    print(i)              # 0 2 4 6 8
04

🔹 Loop while

O while repete enquanto uma condição for verdadeira. Use quando você não sabe previamente o número de repetições.

estrutura
while condicao:
    # código

Exemplo básico:

contador = 0

while contador < 5:
    print(contador)
    contador += 1
saída
0
1
2
3
4
⚠️
Cuidado: loop infinito! Se a condição nunca se tornar False, o programa never termina. Sempre garanta que a condição vai mudar — ou use break para sair.
loop infinito controlado com break
while True:
    entrada = input("Digite 'sair' para parar: ")
    if entrada == "sair":
        break
    print(f"Você digitou: {entrada}")
05

🔹 break, continue e pass

Palavras-chave para controlar o fluxo dentro de um loop.

break → interrompe o loop completamente:

for i in range(10):
    if i == 5:
        break
    print(i)          # imprime 0 1 2 3 4

continue → pula para a próxima iteração:

for i in range(5):
    if i == 2:
        continue
    print(i)          # imprime 0 1 3 4 (pula o 2)

pass → não faz nada (placeholder):

for i in range(5):
    pass              # estrutura vazia, sem erro
💡
pass é útil quando você precisa da estrutura do loop mas ainda não escreveu o código interno. Evita SyntaxError por bloco vazio.
06

🔹 else em loops (pouco conhecido)

Em Python, loops podem ter um bloco else — ele roda somente se o loop terminar normalmente (sem break).

loop sem break → else executa
for i in range(5):
    print(i)
else:
    print("Loop terminou normalmente")
loop com break → else NÃO executa
for i in range(5):
    if i == 3:
        break
else:
    print("Isso não vai aparecer")  # não executa
💡
O else em loops é muito usado em buscas — se o item não foi encontrado, o else avisa.
07

🔹 Loops aninhados

Um loop dentro de outro — útil para trabalhar com matrizes, tabelas e combinações.

for i in range(3):
    for j in range(2):
        print(i, j)
saída
0 0
0 1
1 0
1 1
2 0
2 1
⚠️
Loops muito aninhados (3+ níveis) costumam indicar que o código pode ser refatorado. Prefira funções auxiliares para manter legibilidade.
08

🔹 List Comprehension

Forma curta e pythônica de criar listas usando um loop em uma única linha.

forma tradicional
numeros = []
for x in range(5):
    numeros.append(x)
# numeros = [0, 1, 2, 3, 4]
✨ com list comprehension
numeros = [x for x in range(5)]
# numeros = [0, 1, 2, 3, 4]

Com condição:

pares = [x for x in range(10) if x % 2 == 0]
# pares = [0, 2, 4, 6, 8]

Com transformação:

quadrados = [x**2 for x in range(6)]
# quadrados = [0, 1, 4, 9, 16, 25]
💡
List comprehension é mais rápido e legível que um loop for + append para criação de listas simples. É considerada a forma mais "pythônica".
09

🔹 Funções úteis com loops

sum() — soma elementos:

soma = sum([1, 2, 3, 4, 5])
print(soma)  # 15

max() / min() — maior e menor valor:

max([1, 5, 3])   # 5
min([1, 5, 3])   # 1

zip() — percorre listas em paralelo:

nomes = ["Ana", "João"]
idades = [20, 25]

for nome, idade in zip(nomes, idades):
    print(nome, idade)
saída
Ana 20
João 25

sorted() e reversed() — ordem:

nums = [3, 1, 4, 1, 5]

for n in sorted(nums):
    print(n)              # 1 1 3 4 5

for n in reversed(nums):
    print(n)              # 5 1 4 1 3
10

🔹 Boas práticas e erros comuns

✔ Boas práticas:

❌ Erro 1 — Esquecer de incrementar no while (loop infinito):

# ❌ ruim — loop infinito
i = 0
while i < 5:
    print(i)
    # i nunca muda!

# ✅ correto
i = 0
while i < 5:
    print(i)
    i += 1

❌ Erro 2 — Usar índice desnecessário:

# ❌ ruim
for i in range(len(lista)):
    print(lista[i])

# ✅ melhor
for item in lista:
    print(item)

# ✅ se precisar do índice também
for i, item in enumerate(lista):
    print(i, item)

📋 Quando usar cada tipo:

Situação Use
Percorrer lista / string for item in colecao
Repetir N vezes for i in range(N)
Precisar de índice + valor for i, v in enumerate(lista)
Percorrer duas listas juntas for a, b in zip(lista1, lista2)
Repetir até condição mudar while condicao
Loop infinito controlado while True + break
Criar lista filtrada / transformada [x for x in ... if ...]
11

🚀 Exemplo prático completo

Somando apenas número ímpares de uma lista e filtrando com list comprehension:

exemplo completo
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Soma dos ímpares com for + continue
soma = 0
for n in numeros:
    if n % 2 == 0:
        continue
    soma += n

print("Soma dos ímpares:", soma)  # 25

# Mesma coisa com list comprehension + sum()
impares = [n for n in numeros if n % 2 != 0]
soma2 = sum(impares)

print("Ímpares:", impares)        # [1, 3, 5, 7, 9]
print("Soma:", soma2)              # 25

# Tabela de multiplicação com loops aninhados
print("\nTabela do 3:")
for i in range(1, 11):
    print(f"3 x {i} = {3*i}")
saída
Soma dos ímpares: 25
Ímpares: [1, 3, 5, 7, 9]
Soma: 25

Tabela do 3:
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
...
3 x 10 = 30
💡
Dica final: Se você está aprendendo agora — comece dominando for + range, depois vá para while, depois pratique list comprehension. Essa ordem é a mais natural para um pythonista!