Projeto em Python colaborativo para o Bootcamp de Dados do Itaú em parceria com a Lets Code

Overview

🧾 lets-code-todo-list

por Henrique V. Domingues e Josué Montalvão

Projeto em Python colaborativo para o Bootcamp de Dados do Itaú em parceria com a Lets Code.

Para testar o projeto basta abrir o terminal no diretório em que clonou o projeto e executar o seguinte comando:

python program.py

Proposta

TodoList: Projeto de POO

Neste projeto você vai desenvolver uma lista de tarefas utilizando o Python. À princípio, sua lista de tarefas deverá funcionar no console e você deve dispor de algumas opções para o usuário, as quais são elencadas adiante.

Requisitos Funcionais

A aplicação deve dispor de um menu com as seguintes opções para o usuário:

  1. Adicionar tarefa: Ao solicitar essa opção o usuário poderá criar uma nova tarefa. Para isso, ele deverá informar o título, a data de realização e a categoria da tarefa. Você deverá salvar essas três informações (além de uma informação de que o status da tarefa está como Pendente) dentro de um arquivo CSV (tarefas.csv, por exemplo).
  2. Alterar status da Tarefa: Ao solicitar essa opção o usuário poderá alterar o status de uma determinada tarefa, ou seja, se a tarefa está como Pendente, ficará como Concluída, e vice-versa. Para isso, ele deve informar o título da tarefa. Você deverá alterar a coluna de Status do arquivo, referente à tarefa que possui o título informado pelo usuário.
  3. Remover tarefa: Ao solicitar essa opção o usuário poderá escolher uma tarefa para que essa seja removida. Para isso, ele deve informar o título da tarefa. Você deve remover a linha do arquivo que contém a tarefa cujo título foi informado pelo usuário.
  4. Visualizar tarefas: Ao solicitar essa opção o usuário poderá escolher um dia específico para ver as tarefas agendadas para ele. Para isso, após escolher essa opção, o usuário precisa informar uma data. Você deve procurar pelas atividades que estão programadas para aquele dia específico (dentro do arquivo csv), e exibir todas elas.
  5. Fechar: Ao solicitar essa opção o programa deverá ser encerrado.

Instruções do Projeto

  • O projeto deve ser realizado em grupo, sendo cada um composto por 2 integrantes.
  • O projeto deve ser desenvolvido utilizando o Git, e os commits devem ser realizados por ambos os integrantes da equipe. Lembrando que isso ficará guardado no histórico de commits do projeto.
  • O projeto deve ser realizado com a utilização do conceito de Orientação a Objetos. Ou seja, você deve pensar na lista de tarefas como uma classe que possui atributos e métodos.
  • Embora a estrutura do projeto deva ter os requisitos funcionais citados na seção anterior, sinta-se à vontade para alterar ou até acrescentar outras features. Por exemplo:
    • Você pode querer criar um submódulo com funções que executem algo que você costuma fazer com mais frequência.
    • Você pode adicionar mais opções para o usuário, como editar uma tarefa.
    • Você pode permitir que, no momento da criação de uma tarefa, o usuário possa digitar a data como sendo hoje ou amanhã, além do formato convencional (dd/mm/aaaa).
    • Você pode remover ou alterar o status de uma tafera com base no título e, também, na data (caso haja tarefas com o mesmo título); dessa forma, você evita remover tarefas que possuem o mesmo título.
    • A tarfa pode ter id

Dicas

1. Como posso obter as tarefas de hoje para exibi-las?

Para isso, sugiro que você utilize o módulo datetime que vimos nas nossas aulas. Observe que, dentro desse módulo existe um submódulo chamado date, o qual possui um método chamado today. Veja o exemplo abaixo:

import datetime

hoje = datetime.date.today() # Obtendo a data de hoje

dia = hoje.day # obtendo o dia
mes = hoje.month # obtendo o mês
ano = hoje.year # obtendo o ano

Com o dia, mês e ano referentes ao dia de hoje, você consegue comparar com as datas que você salva no arquivo csv, não é mesmo? Lembrando que essas datas estão no formato dd/mm/aaaa.

OBS.: As variáveis dia, mes e ano são do tipo int.

2. Qual comando eu poderia utilizar no Python para limpar o console?

Para isso, você deve utilizar um comando do sistema, o que é possível de ser feito por meio do módulo os do Python. Nesse módulo, existe uma função chamada system que te permite utilizar comandos do sistemas (comandos que você utilizaria no cmd, prompt de comando ou Terminal). Sendo assim, veja o exemplo abaixo:

import os

# o comando abaixo vai limpar o seu console, caso você esteja utilizando o Windows
os.system('cls')

# o comando abaixo vai limpar o seu console, caso você esteja utilizando o Linux/Mac
os.system('clear')

3. Como eu posso fazer para "congelar" a execução do meu programa por um tempo específico?

Você pode fazer isso utilizando a função sleep do módulo time. Esse módulo já vem instalado com o Python, portanto, basta você fazer a importação desse módulo ou apenas da função sleep (como no exemplo abaixo).

from time import sleep

sleep(3)

print('Essa mensagem só aparece após 3 segundos...')

Observando o exemplo acima, você pode notar que a função sleep deve receber um parâmetro, que é o tempo em segundos que o programar irá "dormir", ou seja, "segurar" o seu fluxo de execução. Portanto, o print que vem logo abaixo da função sleep será executado apenas 3 segundos após a chamada dessa função sleep.

4. Como posso alterar a cor do texto no console?

Uma solução ótima para isso seria a biblioteca rich. Caso tenha interesse em conhecer essa biblioteca, pode dar uma conferida na documentação.

Você pode instalar ela com o pip install rich. Abaixo eu te dou um exemplo de como utilizar essa biblioteca:

from rich import print

print('[green]Essa mensagem está na cor verde![/]')

5. Você pode utilizar um “input” mais poderoso

Caso tenha interesse em utilizar um biblioteca para fazer leitura de dados de uma forma mais inteligente/customizada, você pode optar também pela biblioteca rich. Para isso, consulte a seção Prompt da documentação.

Owner
Henrique V. Domingues
Computer Science student and Data Engineer I at Itaú Unibanco.
Henrique V. Domingues
Gaphor is the simple modeling tool

Gaphor Gaphor is a UML and SysML modeling application written in Python. It is designed to be easy to use, while still being powerful. Gaphor implemen

Gaphor 1.3k Jan 03, 2023
Generates, filters, parses, and cleans data regarding the financial disclosures of judges in the American Judicial System

This repository contains code that gets data regarding financial disclosures from the Court Listener API main.py: contains driver code that interacts

Ali Rastegar 2 Aug 06, 2022
Types that make coding in Python quick and safe.

Type[T] Types that make coding in Python quick and safe. Type[T] works best with Python 3.6 or later. Prior to 3.6, object types must use comment type

Contains 17 Aug 01, 2022
A swagger tool for tornado, using python to write api doc!

SwaggerDoc About A swagger tool for tornado, using python to write api doc! Installation pip install swagger-doc Quick Start code import tornado.ioloo

aaashuai 1 Jan 10, 2022
A simple XLSX/CSV reader - to dictionary converter

sheet2dict A simple XLSX/CSV reader - to dictionary converter Installing To install the package from pip, first run: python3 -m pip install --no-cache

Tomas Pytel 216 Nov 25, 2022
ReStructuredText and Sphinx bridge to Doxygen

Breathe Packagers: PGP signing key changes for Breathe = v4.23.0. https://github.com/michaeljones/breathe/issues/591 This is an extension to reStruct

Michael Jones 643 Dec 31, 2022
A python package to avoid writing and maintaining duplicated python docstrings.

docstring-inheritance is a python package to avoid writing and maintaining duplicated python docstrings.

Antoine Dechaume 15 Dec 07, 2022
Course materials and handouts for #100DaysOfCode in Python course

#100DaysOfCode with Python course Course details page: talkpython.fm/100days Course Summary #100DaysOfCode in Python is your perfect companion to take

Talk Python 1.9k Dec 31, 2022
Test utility for validating OpenAPI documentation

DRF OpenAPI Tester This is a test utility to validate DRF Test Responses against OpenAPI 2 and 3 schema. It has built-in support for: OpenAPI 2/3 yaml

snok 106 Jan 05, 2023
Sphinx Theme Builder

Sphinx Theme Builder Streamline the Sphinx theme development workflow, by building upon existing standardised tools. and provide a: simplified packagi

Pradyun Gedam 23 Dec 26, 2022
This is a template (starter kit) for writing Maturity Work with Sphinx / LaTeX at Collège du Sud

sphinx-tm-template Ce dépôt est un template de base utilisable pour écrire ton travail de maturité dans le séminaire d'informatique du Collège du Sud.

6 Dec 22, 2022
Demonstration that AWS IAM policy evaluation docs are incorrect

The flowchart from the AWS IAM policy evaluation documentation page, as of 2021-09-12, and dating back to at least 2018-12-27, is the following: The f

Ben Kehoe 15 Oct 21, 2022
A plugin to introduce a generic API for Decompiler support in GEF

decomp2gef A plugin to introduce a generic API for Decompiler support in GEF. Like GEF, the plugin is battery-included and requires no external depend

Zion 379 Jan 08, 2023
EasyMultiClipboard - Python script written to handle more than 1 string in clipboard

EasyMultiClipboard - Python script written to handle more than 1 string in clipboard

WVlab 1 Jun 18, 2022
Template repo to quickly make a tested and documented GitHub action in Python with Poetry

Python + Poetry GitHub Action Template Getting started from the template Rename the src/action_python_poetry package. Globally replace instances of ac

Kevin Duff 89 Dec 25, 2022
An MkDocs plugin that simplifies configuring page titles and their order

MkDocs Awesome Pages Plugin An MkDocs plugin that simplifies configuring page titles and their order The awesome-pages plugin allows you to customize

Lukas Geiter 282 Dec 28, 2022
Pyoccur - Python package to operate on occurrences (duplicates) of elements in lists

pyoccur Python Occurrence Operations on Lists About Package A simple python package with 3 functions has_dup() get_dup() remove_dup() Currently the du

Ahamed Musthafa 6 Jan 07, 2023
Some code that takes a pipe-separated input and converts that into a table!

tablemaker A program that takes an input: a | b | c # With comments as well. e | f | g h | i |jk And converts it to a table: ┌───┬───┬────┐ │ a │ b │

CodingSoda 2 Aug 30, 2022
This is a small project written to help build documentation for projects in less time.

Documentation-Builder This is a small project written to help build documentation for projects in less time. About This project builds documentation f

Tom Jebbo 2 Jan 17, 2022