Spec Sistemas Com Python • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 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:

  1. Buscar item em coleção utilizando for ... in ... com verificação de não-encontrado no bloco else.

Resultado Esperado

Bloco else do laço for executado quando o loop não sofreu break.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_03_1_SeuNome
  2. 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:

  1. Combinar listas de clientes, saldos e datas com zip(strict=True) e enumerar com enumerate(..., start=1).

Resultado Esperado

Listas pareadas com validação de tamanho estrito via zip(strict=True).

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_03_2_SeuNome
  2. 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:

  1. Criar classe iteradora ContadorRegressivo implementando 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)

  1. Salve o arquivo como: Atividade_03_3_SeuNome
  2. 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:

  1. Agrupar e fatiar streams de dados com itertools.groupby e itertools.islice.

Resultado Esperado

Pipeline com itertools processando milhares de registros com consumo constante de memória.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_03_4_SeuNome
  2. 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