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.