đ§Ÿ
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:
- 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). - 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.
- 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.
- 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.
- 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
eano
sĂŁo do tipoint
.
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.