🧩 Exercícios: Generics (Generic[T]), Tabelas Hash, Conjuntos (set) e Dicionários (dict)
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 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:
- 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)
- Salve o arquivo como:
Atividade_13_1_SeuNome - 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:
- 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)
- Salve o arquivo como:
Atividade_13_2_SeuNome - 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:
- 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)
- Salve o arquivo como:
Atividade_13_3_SeuNome - 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:
- 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)
- Salve o arquivo como:
Atividade_13_4_SeuNome - 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 |