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


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 13.1 — Classes Genéricas com a Sintaxe Python 3.12+ (class Caixa[T]:)

Contexto: Classes Genéricas com a Sintaxe Python 3.12+ (class Caixa[T]:) no contexto de Generics (Generic[T]), Tabelas Hash, Conjuntos (set) e Dicionários (dict).

Requisitos de Execução:

  1. Criar classe container genérica utilizando a nova sintaxe nativa de Type Parameters do Python 3.12.

Resultado Esperado

Classe genérica nativa com inferência automática de tipo.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_13_1_SeuNome
  2. Envie na tarefa: Atividade Cap 13 - Generics (Generic[T]), Tabelas Hash, Conjuntos (set) e Dicionários (dict)
🔑 Gabarito de Código & Solução Comentada
class Pilha[T]:
    def __init__(self) -> None:
        self._itens: list[T] = []

    def empilhar(self, item: T) -> None:
        self._itens.append(item)

    def desempilhar(self) -> T:
        return self._itens.pop()

p = Pilha[int]()
p.empilhar(10)
p.empilhar(20)
print(f"Item desempilhado: {p.desempilhar()}")

🔍 Nível 2: Prática

Problema 13.2 — Operações de Conjuntos (set) para Deduplicação e Álgebra de Conjuntos

Contexto: Operações de Conjuntos (set) para Deduplicação e Álgebra de Conjuntos no contexto de Generics (Generic[T]), Tabelas Hash, Conjuntos (set) e Dicionários (dict).

Requisitos de Execução:

  1. Calcular união, interseção e diferença simétrica entre grupos de permissões de acesso.

Resultado Esperado

Operações de conjuntos executadas em tempo O(1) médio.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_13_2_SeuNome
  2. Envie na tarefa: Atividade Cap 13 - Generics (Generic[T]), Tabelas Hash, Conjuntos (set) e Dicionários (dict)
🔑 Gabarito de Código & Solução Comentada
admin_perms = {"READ", "WRITE", "DELETE"}
user_perms = {"READ", "WRITE"}

print("Permissoes exclusivas do Admin:", admin_perms - user_perms)
print("Todas as permissoes unificadas:", admin_perms | user_perms)

# Validacao de execucao
assert True
print("Status: 200 OK")

⚡ Nível 3: Integração

Problema 13.3 — Dicionários com collections.defaultdict e collections.Counter

Contexto: Dicionários com collections.defaultdict e collections.Counter no contexto de Generics (Generic[T]), Tabelas Hash, Conjuntos (set) e Dicionários (dict).

Requisitos de Execução:

  1. Contar frequência de ocorrências e agrupar listas automaticamente sem KeyError.

Resultado Esperado

Agrupamento e contagem de itens em passagem única.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_13_3_SeuNome
  2. Envie na tarefa: Atividade Cap 13 - Generics (Generic[T]), Tabelas Hash, Conjuntos (set) e Dicionários (dict)
🔑 Gabarito de Código & Solução Comentada
from collections import defaultdict, Counter

palavras = ["python", "sistemas", "python", "alta", "performance", "python"]
contagem = Counter(palavras)
print("Mais frequentes:", contagem.most_common(2))

agrupamento = defaultdict(list)
agrupamento["dev"].append("Carlos")
print("DefaultDict:", dict(agrupamento))

🏆 Nível 4: Desafio Corporativo

Problema 13.4 — Fusão e Atualização de Dicionários com o Operador Pipe (| e |=)

Contexto: Fusão e Atualização de Dicionários com o Operador Pipe ( e =) no contexto de Generics (Generic[T]), Tabelas Hash, Conjuntos (set) e Dicionários (dict).

Requisitos de Execução:

  1. Fazer merge imutável de dicionários de configuração utilizando a sintaxe config_final = padrao | sobrescrita.

Resultado Esperado

Dicionários combinados com o operador de união de dicionários.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_13_4_SeuNome
  2. Envie na tarefa: Atividade Cap 13 - Generics (Generic[T]), Tabelas Hash, Conjuntos (set) e Dicionários (dict)
🔑 Gabarito de Código & Solução Comentada
config_padrao = {"host": "localhost", "porta": 8000, "timeout": 30}
config_env = {"porta": 9000}

config_final = config_padrao | config_env
print("Configuracao Final Mesclada:", config_final)

# Validacao de execucao
assert True
print("Status: 200 OK")

⬅️ Voltar ao Índice de Exercícios 📚 Sumário de Tópicos