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
PowerApps-docstring is a console based, pipeline ready application that automatically generates user and technical documentation for Power Apps.

powerapps-docstring PowerApps-docstring is a console based, pipeline ready application that automatically generates user and technical documentation f

Sebastian Muthwill 30 Nov 23, 2022
Sphinx-performance - CLI tool to measure the build time of different, free configurable Sphinx-Projects

CLI tool to measure the build time of different, free configurable Sphinx-Projec

useblocks 11 Nov 25, 2022
Spin-off Notice: the modules and functions used by our research notebooks have been refactored into another repository

Fecon235 - Notebooks for financial economics. Keywords: Jupyter notebook pandas Federal Reserve FRED Ferbus GDP CPI PCE inflation unemployment wage income debt Case-Shiller housing asset portfolio eq

Adriano 825 Dec 27, 2022
Materi workshop "Light up your Python!" Himpunan Mahasiswa Sistem Informasi Fakultas Ilmu Komputer Universitas Singaperbangsa Karawang, 4 September 2021 (Online via Zoom).

Workshop Python UNSIKA 2021 Materi workshop "Light up your Python!" Himpunan Mahasiswa Sistem Informasi Fakultas Ilmu Komputer Universitas Singaperban

Eka Putra 20 Mar 24, 2022
Yu-Gi-Oh! Master Duel translation script

Yu-Gi-Oh! Master Duel translation script

715 Jan 08, 2023
💻An open-source eBook with 101 Linux commands that everyone should know

This is an open-source eBook with 101 Linux commands that everyone should know. No matter if you are a DevOps/SysOps engineer, developer, or just a Linux enthusiast, you will most likely have to use

Ashfaque Ahmed 0 Oct 29, 2022
Project documentation with Markdown.

MkDocs Project documentation with Markdown. View the MkDocs documentation. Project release notes. Visit the MkDocs wiki for community resources, inclu

MkDocs 15.6k Jan 02, 2023
API Documentation for Python Projects

API Documentation for Python Projects. Example pdoc -o ./html pdoc generates this website: pdoc.dev/docs. Installation pip install pdoc pdoc is compat

mitmproxy 1.4k Jan 07, 2023
A repository of links with advice related to grad school applications, research, phd etc

A repository of links with advice related to grad school applications, research, phd etc

Shaily Bhatt 946 Dec 30, 2022
Plover jyutping - Plover plugin for Jyutping input

Plover plugin for Jyutping Installation Navigate to the repo directory: cd plove

Samuel Lo 1 Mar 17, 2022
Fully reproducible, Dockerized, step-by-step, tutorial on how to mock a "real-time" Kafka data stream from a timestamped csv file. Detailed blog post published on Towards Data Science.

time-series-kafka-demo Mock stream producer for time series data using Kafka. I walk through this tutorial and others here on GitHub and on my Medium

Maria Patterson 26 Nov 15, 2022
Quickly download, clean up, and install public datasets into a database management system

Finding data is one thing. Getting it ready for analysis is another. Acquiring, cleaning, standardizing and importing publicly available data is time

Weecology 274 Jan 04, 2023
Documentation for GitHub Copilot

NOTE: GitHub Copilot discussions have moved to the Copilot Feedback forum. GitHub Copilot Welcome to the GitHub Copilot user community! In this reposi

GitHub 21.3k Dec 28, 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
charcade is a string manipulation library that can animate, color, and bruteforce strings

charcade charcade is a string manipulation library that can animate, color, and bruteforce strings. Features Animating text for CLI applications with

Aaron 8 May 23, 2022
The project that powers MDN.

Kuma Kuma is the platform that powers MDN (developer.mozilla.org) Development Code: https://github.com/mdn/kuma Issues: P1 Bugs (to be fixed ASAP) P2

MDN Web Docs 1.9k Dec 26, 2022
A curated list of awesome tools for Sphinx Python Documentation Generator

Awesome Sphinx (Python Documentation Generator) A curated list of awesome extra libraries, software and resources for Sphinx (Python Documentation Gen

Hyunjun Kim 831 Dec 27, 2022
Code and pre-trained models for "ReasonBert: Pre-trained to Reason with Distant Supervision", EMNLP'2021

ReasonBERT Code and pre-trained models for ReasonBert: Pre-trained to Reason with Distant Supervision, EMNLP'2021 Pretrained Models The pretrained mod

SunLab-OSU 29 Dec 19, 2022
Generating a report CSV and send it to an email - Python / Django Rest Framework

Generating a report in CSV format and sending it to a email How to start project. Create a folder in your machine Create a virtual environment python3

alexandre Lopes 1 Jan 17, 2022
✨ Real-life Data Analysis and Model Training Workshop by Global AI Hub.

🎓 Data Analysis and Model Training Course by Global AI Hub Syllabus: Day 1 What is Data? Multimedia Structured and Unstructured Data Data Types Data

Global AI Hub 71 Oct 28, 2022