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
Use Brainf*ck with python!

Brainfudge Run Brainf*ck code with python! Classes Interpreter(array_len): encapsulate all functions into class __init__(self, array_len: int=30000) -

1 Dec 14, 2021
This is the repository that includes the code material for the ESweek 2021 for the Education Class Lecture A3 "Learn to Drive (and Race!) Autonomous Vehicles"

ESweek2021_educationclassA3 This is the repository that includes the code material for the ESweek 2021 for the Education Class Lecture A3 "Learn to Dr

F1TENTH Autonomous Racing Community 29 Dec 06, 2022
Coursera learning course Python the basics. Programming exercises and tasks

HSE_Python_the_basics Welcome to BAsics programming Python! You’re joining thousands of learners currently enrolled in the course. I'm excited to have

PavelRyzhkov 0 Jan 05, 2022
swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition.

Master (2.4.25-SNAPSHOT): 3.0.31-SNAPSHOT: Maven Central ⭐ ⭐ ⭐ If you would like to contribute, please refer to guidelines and a list of open tasks. ⭐

Swagger 15.2k Dec 31, 2022
Comprehensive Python Cheatsheet

Comprehensive Python Cheatsheet Download text file, Buy PDF, Fork me on GitHub or Check out FAQ. Contents 1. Collections: List, Dictionary, Set, Tuple

Jefferson 1 Jan 23, 2022
Fun interactive program to sort a list :)

LHD-Build-Sort-a-list Fun interactive program to sort a list :) Inspiration LHD Build Write a script to sort a list. What it does It is a menu driven

Ananya Gupta 1 Jan 15, 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
Parser manager for parsing DOC, DOCX, PDF or HTML files

Parser manager Description Parser gets PDF, DOC, DOCX or HTML file via API and saves parsed data to the database. Implemented in Ruby 3.0.1 using Acti

Эдем 4 Dec 04, 2021
Python-samples - This project is to help someone need some practices when learning python language

Python-samples - This project is to help someone need some practices when learning python language

Gui Chen 0 Feb 14, 2022
Flask-Rebar combines flask, marshmallow, and swagger for robust REST services.

Flask-Rebar Flask-Rebar combines flask, marshmallow, and swagger for robust REST services. Features Request and Response Validation - Flask-Rebar reli

PlanGrid 223 Dec 19, 2022
Markdown documentation generator from Google docstrings

mkgendocs A Python package for automatically generating documentation pages in markdown for Python source files by parsing Google style docstring. The

Davide Nunes 44 Dec 18, 2022
Seamlessly integrate pydantic models in your Sphinx documentation.

Seamlessly integrate pydantic models in your Sphinx documentation.

Franz Wöllert 71 Dec 26, 2022
Generate YARA rules for OOXML documents using ZIP local header metadata.

apooxml Generate YARA rules for OOXML documents using ZIP local header metadata. To learn more about this tool and the methodology behind it, check ou

MANDIANT 34 Jan 26, 2022
The tutorial is a collection of many other resources and my own notes

Why we need CTC? --- looking back on history 1.1. About CRNN 1.2. from Cross Entropy Loss to CTC Loss Details about CTC 2.1. intuition: forward algor

手写AI 7 Sep 19, 2022
This repo provides a package to automatically select a random seed based on ancient Chinese Xuanxue

🤞 Random Luck Deep learning is acturally the alchemy. This repo provides a package to automatically select a random seed based on ancient Chinese Xua

Tong Zhu(朱桐) 33 Jan 03, 2023
Credit EDA Case Study Using Python

This case study aims to identify patterns which indicate if a client has difficulty paying their installments which may be used for taking actions such as denying the loan, reducing the amount of loa

Purvi Padliya 1 Jan 14, 2022
Paper and Code for "Curriculum Learning by Optimizing Learning Dynamics" (AISTATS 2021)

Curriculum Learning by Optimizing Learning Dynamics (DoCL) AISTATS 2021 paper: Title: Curriculum Learning by Optimizing Learning Dynamics [pdf] [appen

Tianyi Zhou 15 Dec 06, 2022
Build documentation in multiple repos into one site.

mkdocs-multirepo-plugin Build documentation in multiple repos into one site. Setup Install plugin using pip: pip install git+https://github.com/jdoiro

Joseph Doiron 47 Dec 28, 2022
Highlight Translator can help you translate the words quickly and accurately.

Highlight Translator can help you translate the words quickly and accurately. By only highlighting, copying, or screenshoting the content you want to translate anywhere on your computer (ex. PDF, PPT

Coolshan 48 Dec 21, 2022
Repository for tutorials, examples and starter scripts for using the MTU HPC cluster

MTU-HPC-Starter Repository for tutorials, examples and starter scripts for using the MTU HPC cluster Connecting to the MTU HPC cluster Within the coll

1 Jan 31, 2022