Use estruturas de dados + funções para montar três miniaplicações.
Desafio 1: Gerenciador de tarefas #
- Liste tarefas, implemente
add_taskefinish_task - Ao concluir, armazene no histórico (lista de dicionários)
def add_task(tasks, task):
tasks.append(task)
def finish_task(tasks, history):
task = tasks.pop(0)
history.append({“task”: task})
def main():
tasks = []
history = []
add_task(tasks, “Fazer relatório”)
add_task(tasks, “Limpar dados”)
finish_task(tasks, history)
print(“Pendentes”, tasks)
print(“Histórico”, history)
if name == “main”:
main()
Desafio 2: Dashboard de estoque #
- Produtos em lista de dicionários (
name,price,stock) filter_low_stockpara itens quase acabandoformat_productpara exibir bonito
def filter_low_stock(products, threshold=5):
return [p for p in products if p["stock"] <= threshold]
def format_product(product):
return f"{product[’name’]} (estoque {product[‘stock’]}, preço {product[‘price’]})"
def main():
products = [
{“name”: “Caderno”, “price”: 150, “stock”: 3},
{“name”: “Caneta”, “price”: 100, “stock”: 12},
{“name”: “Borracha”, “price”: 80, “stock”: 1}
]
for product in filter_low_stock(products):
print(format_product(product))
if name == “main”:
main()
Desafio 3: Relatório de finanças pessoais #
- Entrada: lista de dicionários com data, categoria, valor
group_by_categorysoma por categoriaprint_reportmostra o resultado
def group_by_category(entries):
result = {}
for entry in entries:
cat = entry["category"]
result.setdefault(cat, 0)
result[cat] += entry["amount"]
return result
def print_report(summary):
print(“Resumo por categoria”)
for category, total in sorted(summary.items()):
print(f"- {category}: {total}")
def main():
entries = [
{“date”: “2024-01-05”, “category”: “Alimentação”, “amount”: 1200},
{“date”: “2024-01-05”, “category”: “Transporte”, “amount”: 400},
{“date”: “2024-01-06”, “category”: “Alimentação”, “amount”: 900}
]
summary = group_by_category(entries)
print_report(summary)
if name == “main”:
main()