From b23b00e55d91bb0d2873dbea8ae57398528c5836 Mon Sep 17 00:00:00 2001 From: anapaulads Date: Tue, 21 May 2024 13:25:34 -0300 Subject: [PATCH] =?UTF-8?q?adicionando=20solu=C3=A7=C3=B5es=20dos=20exerci?= =?UTF-8?q?cios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exercicios/para_casa/README.md | 89 +++++++++++++++ exercicios/para_casa/__init__.py | 0 .../para_casa/__pycache__/csv.cpython-312.pyc | Bin 0 -> 959 bytes .../funcoes_livraria.cpython-312.pyc | Bin 0 -> 5154 bytes exercicios/para_casa/exportados_livros.csv | 5 + exercicios/para_casa/funcoes_livraria.py | 108 ++++++++++++++++++ .../para_casa/instrucoes-pull-request.md | 31 +++++ exercicios/para_casa/livraria.db | Bin 0 -> 12288 bytes exercicios/para_casa/livros.csv | 6 + exercicios/para_casa/menu_livraria.py | 43 +++++++ 10 files changed, 282 insertions(+) create mode 100644 exercicios/para_casa/README.md create mode 100644 exercicios/para_casa/__init__.py create mode 100644 exercicios/para_casa/__pycache__/csv.cpython-312.pyc create mode 100644 exercicios/para_casa/__pycache__/funcoes_livraria.cpython-312.pyc create mode 100644 exercicios/para_casa/exportados_livros.csv create mode 100644 exercicios/para_casa/funcoes_livraria.py create mode 100644 exercicios/para_casa/instrucoes-pull-request.md create mode 100644 exercicios/para_casa/livraria.db create mode 100644 exercicios/para_casa/livros.csv create mode 100644 exercicios/para_casa/menu_livraria.py diff --git a/exercicios/para_casa/README.md b/exercicios/para_casa/README.md new file mode 100644 index 0000000..a06073c --- /dev/null +++ b/exercicios/para_casa/README.md @@ -0,0 +1,89 @@ +# Exercício de Casa 🏠 + +### Integração Completa de CSV com SQLite usando Python + +#### Objetivo + +O objetivo deste exercício é praticar a integração de arquivos CSV com um banco de dados SQLite usando Python. Você irá criar um banco de dados, importar dados de um arquivo CSV para uma tabela, realizar operações de CRUD (Create, Read, Update, Delete) e, finalmente, exportar os dados da tabela para um novo arquivo CSV. + +#### Descrição do Exercício + +1. **Criação do Banco de Dados e Tabela** + - Crie um banco de dados SQLite chamado `livraria.db`. + - Crie uma tabela chamada `livros` com as colunas: + - `id` (INTEGER, chave primária, autoincremento) + - `titulo` (TEXT) + - `autor` (TEXT) + - `ano` (INTEGER) + - `preco` (REAL) + +2. **Importação de Dados de um CSV** + - Crie um arquivo CSV chamado `livros.csv` com as colunas `titulo`, `autor`, `ano`, e `preco`. + - Adicione pelo menos 5 registros no arquivo `livros.csv`. + - Escreva um script Python que leia os dados de `livros.csv` e insira-os na tabela `livros`. + +3. **Consulta e Exibição de Dados** + - Escreva um script Python que selecione e exiba todos os registros da tabela `livros`. + +4. **Atualização de Dados** + - Escreva um script Python que atualize o preço de um livro específico (por exemplo, mude o preço do livro com `id` 1 para 29.99). + +5. **Remoção de Dados** + - Escreva um script Python que remova um livro específico da tabela (por exemplo, remova o livro com `id` 3). + +6. **Exportação de Dados para CSV** + - Escreva um script Python que exporte os dados da tabela `livros` para um novo arquivo CSV chamado `exportados_livros.csv`. + + +### Exemplo do arquivo livros.csv + +Crie um arquivo CSV chamado `livros.csv` com o seguinte conteúdo: + +```csv +titulo,autor,ano,preco +Livro A,Autor A,2020,25.99 +Livro B,Autor B,2019,19.99 +Livro C,Autor C,2018,29.99 +Livro D,Autor D,2021,15.99 +Livro E,Autor E,2022,22.99 +``` + + +#### Tarefas Adicionais + +Para melhorar ainda mais suas habilidades, você pode adicionar as seguintes funcionalidades aos seus scripts: + +1. **Validação de Dados**: + - Adicione validações para garantir que os dados lidos do CSV sejam válidos antes de inseri-los no banco de dados. + +2. **Manipulação de Exceções**: + - Adicione tratamento de exceções para lidar com possíveis erros durante a leitura, inserção e atualização de dados. + +3. **Interatividade**: + - Torne seus scripts interativos, solicitando entradas do usuário para operações como inserção, atualização e remoção de dados. + +#### Envio do Exercício + +Após completar o exercício, deve ter os seguintes arquivos: +- `criar_banco.py` +- `importar_csv.py` +- `consultar_livros.py` +- `atualizar_livro.py` +- `remover_livro.py` +- `exportar_csv.py` +- `livros.csv` + +Certifique-se de testar todos os scripts para garantir que eles funcionam corretamente antes de enviá-los. + +Boa sorte! +--- + +Terminou o exercício? Dá uma olhada nessa checklist e confere se tá tudo certinho, combinado?! + +- [ ] Fiz o fork do repositório. +- [ ] Clonei o fork na minha máquina (`git clone url-do-meu-fork`). +- [ ] Resolvi o exercício. +- [ ] Adicionei as mudanças. (`git add .` para adicionar todos os arquivos, ou `git add nome_do_arquivo` para adicionar um arquivo específico) +- [ ] Commitei a cada mudança significativa ou na finalização do exercício (`git commit -m "Mensagem do commit"`) +- [ ] Pushei os commits na minha branch (`git push origin nome-da-branch`) +- [ ] Criei um Pull Request seguindo as orientaçoes que estao nesse [documento](https://github.com/mflilian/repo-example/blob/main/exercicios/para-casa/instrucoes-pull-request.md). diff --git a/exercicios/para_casa/__init__.py b/exercicios/para_casa/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/exercicios/para_casa/__pycache__/csv.cpython-312.pyc b/exercicios/para_casa/__pycache__/csv.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..53a6bb8fc009d079e28813fa85f7e22f276e5822 GIT binary patch literal 959 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 +O checklist da atividade ta todo preenchido? Entao agora tá na hora de fazer nosso pull request para o repositório original.
+Você deverá navegar até o seu repositório onde você fez o fork e pressionar o botão “New pull request” no lado esquerdo da página.

+![alt](https://assets.digitalocean.com/articles/eng_python/PullRequest/PRButton.png) + +Você poderá modificar a branch na próxima tela. + +Depois de ter escolhido a branch main do repositório original no lado esquerdo, e a nova-branch do seu fork do lado direito, você deve ver uma tela assim: + +![alt](https://assets.digitalocean.com/articles/eng_python/PullRequest/PullRequest.png) +

+O GitHub vai lhe alertar de que é possível mesclar as duas branches porque não há código concorrente. Você deve adicionar um título, e um comentário descrevendo o seu PR.

+DICAS:
+1. Você pode seguir esse modelo para o título do seu PR: +``` +Nome da Atividade - Seu nome. +``` +2. Você pode seguir esse modelo para a descrição do seu PR: +``` +O que? +Resolução dos exercícios de lógica. + +Como? +* Adicionei um arquivo para resolver a atividade 1 utilizando os métodos slice e split; +* Adicionei casos de testes unitários para cada um dos exercícios utilizando jest; +* Outro ponto que você queira adicionar. +``` +Feito isso, é so clicar em “Create pull request”.

+Tcharaaaannn! Agora é só esperar a prof revisar seu PR 💜 diff --git a/exercicios/para_casa/livraria.db b/exercicios/para_casa/livraria.db new file mode 100644 index 0000000000000000000000000000000000000000..5edbd5e96ff03e914de695e482eaeccbdab635eb GIT binary patch literal 12288 zcmeI&KX21O6aetElg3h{Vzw#_=rJG~wFRN51tCR>Q>-d!nx=^>kqI5iwVZJ7((@%C zHiX#t0x;5vZvd=W5Q2e;g#{Q{S&?{YNDu{yfvtK^zLV{H@6P^h{?pp2Nh@Gan;y4N zV5gbmuo3`cER8LNZ5j^ljL%JDeEhFSvy1BGJZ8D4UNip;b`&H)0wh2JBtQZrKmsH{ z0wh2JB=8>s4L7r}wB)oczZHw*AjXHt1lxraz%Ux8wCzi1? z|DfY|3%Q*0@Z8ayu^bwmOnUdX87Aizv+y%y7b^8A+z6Y{XjZm@W*aucHUzuTcBPJ$ zTVXv~o@HBU2eF1Iyb(ct8{2NJ_G^?6tTso3;onA;o-OrfZQqEF2E5nWtaN&bv(@wS zzGi7Z#r*gFGk?ub;VuOUkN^pg011!)36KB@kN^pg012E#fy;9lR>-?vMOhKceSBje zIV2kU_&Qfo#IT`b(c{YdQmQ_Fi}CJCI>Xk_yIuetZTP=Lfk68ALV1Am8GITX_9FtN9B$%Zf@_CA-YxhEJ;SDZ