Capítulo 03: Estruturas Repetitivas (while, for), Iteradores, enumerate e zip
Especialização em Sistemas com Python & POO com Type Hints • Capítulo 03
🗺️ Mapa Conceitual do Tópico
flowchart LR
A["Iterável (list, range, generator)"] -->|"iter()"| B["Iterador (__iter__, __next__)"]
B -->|for item in iteravel| C["Processamento por Elemento"]
C -->|"enumerate()"| D["Gera (índice, elemento)"]
C -->|"zip(a, b)"| E["Combina N coleções em Tuplas"]
C -->|"Critério de Parada (break)"| F["Encerramento Prematuro"]
C -->|Conclusão Natural| G["Cláusula else do Laço"]
style A fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style B fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style C fill:#ede7f6,stroke:#7e57c2,stroke-width:2px
style G fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🔁 1. Estruturas Repetitivas e o Protocolo de Iteração
Em Python, a iteração é fundamentada no Protocolo de Iterador (__iter__() e __next__()), tornando laços for extremamente rápidos e eficientes em memória.
Principais Ferramentas de Repetição:
while: Repetição orientada a condição ou sentinela.for ... in: Iteração direta sobre qualquer objeto iterável.enumerate(iteravel, start=0): Produz tuplas(indice, elemento)sem a necessidade de contadores manuais.zip(col_a, col_b): Combina múltiplas coleções elemento a elemento em tuplas sincronizadas.for ... else: O blocoelsesó é executado se o laço for concluído sem interrupção porbreak.
💻 Exemplo Prático e Tipado
"""
exemplo_03_estruturas_repetitivas.py - Simulação Financeira com Laços Iterativos
"""
from decimal import Decimal, ROUND_HALF_EVEN
def simular_evolucao_capital(
aporte_inicial: Decimal,
aporte_mensal: Decimal,
taxa_mensal: Decimal,
meses: int
) -> list[dict[str, Decimal]]:
"""Projeta a evolução mensal de investimentos com cálculo de juros compostos."""
saldo = aporte_inicial
historico = []
for mes in range(1, meses + 1):
rendimento = (saldo * taxa_mensal).quantize(Decimal("0.01"), ROUND_HALF_EVEN)
saldo += rendimento + aporte_mensal
historico.append({
"mes": mes,
"rendimento": rendimento,
"saldo_acumulado": saldo,
})
return historico
if __name__ == "__main__":
projecao = simular_evolucao_capital(
aporte_inicial=Decimal("10000.00"),
aporte_mensal=Decimal("500.00"),
taxa_mensal=Decimal("0.01"),
meses=6
)
print("Mês | Rendimento (R$) | Saldo Final (R$)")
print("-" * 40)
for p in projecao:
print(f"{p['mes']:>3} | R$ {p['rendimento']:>12.2f} | R$ {p['saldo_acumulado']:>14.2f}")
🔗 Recursos Pedagógicos do Capítulo 03
| Recurso Didático | Finalidade | Link de Acesso |
|---|---|---|
| 📊 Slides de Aula | Apresentação visual interativa com Dark Mode e suporte a teclado | Ver Slides |
| 🧠 Quiz Formativo | Teste interativo de fixação com feedback imediato por alternativa | Fazer Quiz |
| 💻 Exemplos de Código | Demonstrações funcionais com Type Hints e saída no console | Ver Exemplos |
| 🧩 Exercícios em 4 Níveis | Lista progressiva de fixação com gabarito em bloco colapsável | Resolver Exercícios |
| 🔀 Capítulo Anterior | 📚 Sumário de Tópicos | 🔢 Próximo Capítulo |