Loops e condicionais são a lógica de controle de fluxo do Python — a diferença entre um script que executa uma vez e um que processa milhares de registros, tomando decisões diferentes para cada um. A sintaxe é baseada em indentação (espaços ou tabulações), não em chaves.

Condicionais: if, elif, else

valor = 1500

if valor >= 5000:
    print("Cliente Ouro")
elif valor >= 2000:
    print("Cliente Prata")
elif valor >= 500:
    print("Cliente Bronze")
else:
    print("Sem categoria")

# Forma compacta (ternário):
categoria = "Premium" if valor > 3000 else "Standard"

A indentação (4 espaços) é obrigatória — ela define o bloco de código que pertence ao if/elif/else.

Loop for: iterando sobre sequências

vendas = [1200, 3400, 890, 5600, 2100]

for venda in vendas:
    print(venda)

# Com índice usando enumerate:
for i, venda in enumerate(vendas):
    print(f"Posição {i}: R$ {venda:,.2f}")

# Iterando sobre range:
for i in range(5):           # 0, 1, 2, 3, 4
    print(i)

for i in range(1, 11):       # 1 até 10
    print(i)

for i in range(0, 100, 10): # 0, 10, 20, ..., 90
    print(i)

Loop while: repetindo enquanto condição é verdadeira

tentativas = 0
limite = 5

while tentativas < limite:
    print(f"Tentativa {tentativas + 1}")
    tentativas += 1

print("Concluído!")

Cuidado com loops infinitos — sempre garanta que a condição do while eventualmente se tornará falsa.

break e continue

numeros = [1, 5, 3, 8, 2, 9, 4]

for n in numeros:
    if n == 8:
        break      # para o loop completamente quando encontra 8
    print(n)       # imprime: 1, 5, 3

for n in numeros:
    if n % 2 == 0:
        continue   # pula os pares e vai para o próximo
    print(n)       # imprime: 1, 5, 3, 9

Exemplo prático: processando registros

pedidos = [
    {"produto": "Notebook", "valor": 4500, "status": "Entregue"},
    {"produto": "Mouse", "valor": 80, "status": "Cancelado"},
    {"produto": "Monitor", "valor": 1200, "status": "Entregue"},
]

total_entregue = 0
for pedido in pedidos:
    if pedido["status"] == "Cancelado":
        continue
    total_entregue += pedido["valor"]

print(f"Total entregue: R$ {total_entregue:,.2f}")

Perguntas frequentes

Python tem switch/case como outras linguagens?

Sim, desde o Python 3.10: o comando match/case. Para versões anteriores, use if/elif encadeados ou dicionários de despacho.

Como iterar sobre dois iteráveis ao mesmo tempo?

Use zip(): for nome, valor in zip(nomes, valores):. O zip para quando o menor iterável termina.