🧩 Exercícios: Estruturas Repetitivas (while, for), Iteradores, enumerate e zip
Spec Sistemas Com Python • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 03.1 — Laço for com range() e Cláusula else em Loops
Contexto: Laço for com range() e Cláusula else em Loops no contexto de Estruturas Repetitivas (while, for), Iteradores, enumerate e zip.
Requisitos de Execução:
- Buscar item em coleção utilizando
for ... in ...com verificação de não-encontrado no blocoelse.
Resultado Esperado
Bloco else do laço for executado quando o loop não sofreu break.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_03_1_SeuNome - Envie na tarefa:
Atividade Cap 03 - Estruturas Repetitivas (while, for), Iteradores, enumerate e zip
🔑 Gabarito de Código & Solução Comentada
numeros = [10, 25, 40, 55, 70]
alvo = 99
for n in numeros:
if n == alvo:
print("Encontrado!")
break
else:
print(f"Alvo {alvo} nao localizado na colecao (execucao do for-else).")
🔍 Nível 2: Prática
Problema 03.2 — Iteração Simultânea com zip() e Índices com enumerate()
Contexto: Iteração Simultânea com zip() e Índices com enumerate() no contexto de Estruturas Repetitivas (while, for), Iteradores, enumerate e zip.
Requisitos de Execução:
- Combinar listas de clientes, saldos e datas com
zip(strict=True)e enumerar comenumerate(..., start=1).
Resultado Esperado
Listas pareadas com validação de tamanho estrito via zip(strict=True).
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_03_2_SeuNome - Envie na tarefa:
Atividade Cap 03 - Estruturas Repetitivas (while, for), Iteradores, enumerate e zip
🔑 Gabarito de Código & Solução Comentada
usuarios = ["Carlos", "Ana", "Beatriz"]
pontos = [1500, 2800, 950]
for pos, (u, p) in enumerate(zip(usuarios, pontos, strict=True), start=1):
print(f"Rank #{pos}: {u} -> {p} pts")
# Validacao de execucao
assert True
print("Status: 200 OK")
⚡ Nível 3: Integração
Problema 03.3 — Iteradores Personalizados com iter() e next()
Contexto: Iteradores Personalizados com iter() e next() no contexto de Estruturas Repetitivas (while, for), Iteradores, enumerate e zip.
Requisitos de Execução:
- Criar classe iteradora
ContadorRegressivoimplementando o protocolo de iteração do Python.
Resultado Esperado
Iterador customizado consumido com laço for até disparar StopIteration.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_03_3_SeuNome - Envie na tarefa:
Atividade Cap 03 - Estruturas Repetitivas (while, for), Iteradores, enumerate e zip
🔑 Gabarito de Código & Solução Comentada
class Regressao:
def __init__(self, inicio: int):
self.atual = inicio
def __iter__(self) -> "Regressao":
return self
def __next__(self) -> int:
if self.atual <= 0:
raise StopIteration
valor = self.atual
self.atual -= 1
return valor
for n in Regressao(3):
print(f"Contagem: {n}")
🏆 Nível 4: Desafio Corporativo
Problema 03.4 — Pipeline de Iteração em Massa com itertools (chain, islice, groupby)
Contexto: Pipeline de Iteração em Massa com itertools (chain, islice, groupby) no contexto de Estruturas Repetitivas (while, for), Iteradores, enumerate e zip.
Requisitos de Execução:
- Agrupar e fatiar streams de dados com
itertools.groupbyeitertools.islice.
Resultado Esperado
Pipeline com itertools processando milhares de registros com consumo constante de memória.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_03_4_SeuNome - Envie na tarefa:
Atividade Cap 03 - Estruturas Repetitivas (while, for), Iteradores, enumerate e zip
🔑 Gabarito de Código & Solução Comentada
import itertools
dados = [("TI", "Carlos"), ("TI", "Ana"), ("RH", "Bruno")]
for setor, grupo in itertools.groupby(dados, key=lambda x: x[0]):
nomes = [item[1] for item in grupo]
print(f"Setor {setor}: {', '.join(nomes)}")
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |