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
Fastest Git client for Emacs.

EAF Git Client EAF Git is git client application for the Emacs Application Framework. The advantages of EAF Git are: Large log browse: support 1 milli

Emacs Application Framework 31 Dec 02, 2022
JMESPath is a query language for JSON.

JMESPath JMESPath (pronounced "james path") allows you to declaratively specify how to extract elements from a JSON document. For example, given this

1.7k Dec 31, 2022
A collection of lecture notes, drawings, flash cards, mind maps, scripts

Neuroanatomy A collection of lecture notes, drawings, flash cards, mind maps, scripts and other helpful resources for the course "Functional Organizat

Georg Reich 3 Sep 21, 2022
Tampilan - Change Termux Appearance With Python

Tampilan Gambar usage pkg update && pkg upgrade pkg install git && pkg install f

Creator Lord-Botz 1 Jan 31, 2022
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
Simple yet powerful CAD (Computer Aided Design) library, written with Python.

Py-MADCAD it's time to throw parametric softwares out ! Simple yet powerful CAD (Computer Aided Design) library, written with Python. Installation

jimy byerley 124 Jan 06, 2023
Soccerdata - Efficiently scrape soccer data from various sources

SoccerData is a collection of wrappers over soccer data from Club Elo, ESPN, FBr

Pieter Robberechts 195 Jan 04, 2023
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
CoderByte | Practice, Tutorials & Interview Preparation Solutions|

CoderByte | Practice, Tutorials & Interview Preparation Solutions This repository consists of solutions to CoderByte practice, tutorials, and intervie

Eda AYDIN 6 Aug 09, 2022
Testing-crud-login-drf - Creation of an application in django on music albums

testing-crud-login-drf Creation of an application in django on music albums Befo

Juan 1 Jan 11, 2022
PyPresent - create slide presentations from notes

PyPresent Create slide presentations from notes Add some formatting to text file

1 Jan 06, 2022
A system for Python that generates static type annotations by collecting runtime types

MonkeyType MonkeyType collects runtime types of function arguments and return values, and can automatically generate stub files or even add draft type

Instagram 4.1k Jan 07, 2023
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
Fast syllable estimation library based on pattern matching.

Syllables: A fast syllable estimator for Python Syllables is a fast, simple syllable estimator for Python. It's intended for use in places where speed

ProseGrinder 26 Dec 14, 2022
This is a tool to make easier brawl stars modding using csv manipulation

Brawler Maker : Modding Tool for Brawl Stars This is a tool to make easier brawl stars modding using csv manipulation if you want to support me, just

6 Nov 16, 2022
Bring RGB to life in Neovim

Bring RGB to life in Neovim Change your RGB devices' color depending on Neovim's mode. Fast and asynchronous plugin to live your vim-life to the fulle

Antoine 40 Oct 27, 2022
Crystal Smp plugin for show scoreboards

MCDR-CrystalScoreboards Crystal plugin for show scoreboards | Only 1.12 Usage !!s : Plugin help message !!s hide : Hide scoreboard !!s show : Show Sco

CristhianCd 3 Oct 12, 2021
level2-data-annotation_cv-level2-cv-15 created by GitHub Classroom

[AI Tech 3기 Level2 P Stage] 글자 검출 대회 팀원 소개 김규리_T3016 박정현_T3094 석진혁_T3109 손정균_T3111 이현진_T3174 임종현_T3182 Overview OCR (Optimal Character Recognition) 기술

6 Jun 10, 2022
Explain yourself! Interrogate a codebase for docstring coverage.

interrogate: explain yourself Interrogate a codebase for docstring coverage. Why Do I Need This? interrogate checks your code base for missing docstri

Lynn Root 435 Dec 29, 2022
This program has been coded to allow the user to rename all the files in the entered folder.

Bulk_File_Renamer This program has been coded to allow the user to rename all the files in the entered folder. The only required package is "termcolor

1 Jan 06, 2022