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.

You might also like...
Automated generation of real Swagger/OpenAPI 2.0 schemas from Django REST Framework code.
Automated generation of real Swagger/OpenAPI 2.0 schemas from Django REST Framework code.

drf-yasg - Yet another Swagger generator Generate real Swagger/OpenAPI 2.0 specifications from a Django Rest Framework API. Compatible with Django Res

ƻmija is a simple universal code generation tool.

ƻmija ƻmija is a simple universal code generation tool. It is intended to be used as a means to generate code that is both efficient and easily mainta

Automatic links from code examples to reference documentation

sphinx-codeautolink Automatic links from Python code examples to reference documentation at the flick of a switch! sphinx-codeautolink analyses the co

Portfolio project for Code Institute Full Stack software development course.
Portfolio project for Code Institute Full Stack software development course.

Comic Sales tracker This project is the third milestone project for the Code Institute Diploma in Full Stack Software Development. You can see the fin

Show Rubygems description and annotate your code right from Sublime Text.

Gem Description for Sublime Text Show Rubygems description and annotate your code. Just mouse over your Gemfile's gem definitions to show the popup. s

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 │

Count the number of lines of code in a directory, minus the irrelevant stuff

countloc Simple library to count the lines of code in a directory (excluding stuff like node_modules) Simply just run: countloc node_modules args to

graphical orbitational simulation of solar system planets with real values and physics implemented so you get a nice elliptical orbits. you can change timestamp value or scale from source code idc.
graphical orbitational simulation of solar system planets with real values and physics implemented so you get a nice elliptical orbits. you can change timestamp value or scale from source code idc.

solarSystemOrbitalSimulation graphical orbitational simulation of solar system planets with real values and physics implemented so you get a nice elli

Code for our SIGIR 2022 accepted paper : P3 Ranker: Mitigating the Gaps between Pre-training and Ranking Fine-tuning with Prompt-based Learning and Pre-finetuning

P3 Ranker Implementation for our SIGIR2022 accepted paper: P3 Ranker: Mitigating the Gaps between Pre-training and Ranking Fine-tuning with Prompt-bas

Comments
  • AlteraçÔes finais na exibição por pĂĄginas

    AlteraçÔes finais na exibição por påginas

    • Menu agora exibe qual o nĂșmero da pĂĄgina que estĂĄ sendo exibida, assim como o nĂșmero total de pĂĄginas.
    • Arquivo .csv em database/ preenchido com tarefas que fazem sentido
    opened by josuemontalvao 0
  • AlteraçÔes e criação de arquivo de testes

    AlteraçÔes e criação de arquivo de testes

    AlteraçÔes das classes Task e Task_List_Class e também da classe Manage_Date. Mudanças nas funçÔes, criado arquivo de testes 'task_list_tests.py' para testes da classe Task_List

    opened by hvdomingues 0
  • Últimas mudanças do domingo

    Últimas mudanças do domingo

    • Atualização do README.md: instrução de como executar o projeto adicionada
    • program.py: arquivo para iniciar o projeto pelo terminal de maneira mais simples
    • task_list.csv: exemplos agora com data dentro do formato requisitado
    • Visualizar tarefas por filtro de data acrescentado Ă  classe Menu
    opened by josuemontalvao 0
Owner
Henrique V. Domingues
Computer Science student and Data Engineer I at ItaĂș Unibanco.
Henrique V. Domingues
Source Code for 'Practical Python Projects' (video) by Sunil Gupta

Apress Source Code This repository accompanies %Practical Python Projects by Sunil Gupta (Apress, 2021). Download the files as a zip using the green b

Apress 2 Jun 1, 2022
Tutorial for STARKs with supporting code in python

stark-anatomy STARK tutorial with supporting code in python Outline: introduction overview of STARKs basic tools -- algebra and polynomials FRI low de

null 121 Jan 3, 2023
Python code for working with NFL play by play data.

nfl_data_py nfl_data_py is a Python library for interacting with NFL data sourced from nflfastR, nfldata, dynastyprocess, and Draft Scout. Includes im

null 82 Jan 5, 2023
A collection and example code of every topic you need to know about in the basics of Python.

The Python Beginners Guide: Master The Python Basics Tonight This guide is a collection of every topic you need to know about in the basics of Python.

Ahmed Baari 1 Dec 19, 2021
Quick tutorial on orchest.io that shows how to build multiple deep learning models on your data with a single line of code using python

Deep AutoViML Pipeline for orchest.io Quickstart Build Deep Learning models with a single line of code: deep_autoviml Deep AutoViML helps you build te

Ram Seshadri 6 Oct 2, 2022
Some of the best ways and practices of doing code in Python!

Pythonicness ❀ This repository contains some of the best ways and practices of doing code in Python! Features Properly formatted codes (PEP 8) for bet

Samyak Jain 2 Jan 15, 2022
Example Python code for running the mango-explorer marketmaker

?? Mango Explorer ?? Introduction This guide will show you how to load and run a customisable marketmaker that runs on Mango Markets using the mango-e

Blockworks Foundation 2 Apr 11, 2022
Near Zero-Overhead Python Code Coverage

Slipcover: Near Zero-Overhead Python Code Coverage by Juan Altmayer Pizzorno and Emery Berger at UMass Amherst's PLASMA lab. About Slipcover Slipcover

PLASMA @ UMass 325 Dec 28, 2022
The source code that powers readthedocs.org

Welcome to Read the Docs Purpose Read the Docs hosts documentation for the open source community. It supports Sphinx docs written with reStructuredTex

Read the Docs 7.4k Dec 25, 2022
Documentation of the QR code found on new Austrian ID cards.

Austrian ID Card QR Code This document aims to be a complete documentation of the format used in the QR area on the back of new Austrian ID cards (Per

Gabriel Huber 9 Dec 12, 2022