{"id":31363869,"url":"https://github.com/selrahcsan/50-dias-de-python","last_synced_at":"2025-10-05T22:57:15.100Z","repository":{"id":316260700,"uuid":"1062578759","full_name":"selrahcsan/50-dias-de-Python","owner":"selrahcsan","description":"Desafio de 50 dias para estudar Python","archived":false,"fork":false,"pushed_at":"2025-10-01T14:39:25.000Z","size":61,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-01T15:32:48.159Z","etag":null,"topics":["desafios","exercicios","exercicios-python","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/selrahcsan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-23T12:51:41.000Z","updated_at":"2025-10-01T14:39:29.000Z","dependencies_parsed_at":"2025-09-23T16:30:49.742Z","dependency_job_id":null,"html_url":"https://github.com/selrahcsan/50-dias-de-Python","commit_stats":null,"previous_names":["selrahcsan/50-dias-de-python"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/selrahcsan/50-dias-de-Python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selrahcsan%2F50-dias-de-Python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selrahcsan%2F50-dias-de-Python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selrahcsan%2F50-dias-de-Python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selrahcsan%2F50-dias-de-Python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/selrahcsan","download_url":"https://codeload.github.com/selrahcsan/50-dias-de-Python/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selrahcsan%2F50-dias-de-Python/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278532354,"owners_count":26002346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desafios","exercicios","exercicios-python","python"],"created_at":"2025-09-27T05:28:47.687Z","updated_at":"2025-10-05T22:57:15.081Z","avatar_url":"https://github.com/selrahcsan.png","language":"Python","readme":"# Intensivo de Python: 50 Desafios Práticos\n\nEste documento contém uma lista curada de 50 desafios de programação em Python criados pelo Gemmini Pro, organizados por nível de dificuldade para guiar seu aprendizado de forma progressiva.\n\n## 🔰 Nível Iniciante (Dia 1-10)\n\n**Foco:** Sintaxe básica, variáveis, tipos de dados e operadores.\n\n1. **Olá, Mundo!:** Escreva um programa que imprima \"Olá, Mundo!\" na tela.\n2. **Soma Simples:** Crie um programa que solicite dois números ao usuário e mostre a soma deles.\n3. **Conversor de Unidades (Metros para Centímetros):** Peça ao usuário um valor em metros e converta-o para centímetros.\n4. **Calculadora de Idade:** Pergunte o ano de nascimento do usuário e calcule a idade aproximada dele.\n5. **Concatenação de Strings:** Solicite o nome e o sobrenome do usuário e exiba uma mensagem de boas-vindas com o nome completo.\n6. **Verificador de Número Par ou Ímpar:** Crie um programa que receba um número inteiro e diga se ele é par ou ímpar.\n7. **Cálculo de Média:** Peça ao usuário para inserir três notas e calcule a média aritmética.\n8. **Operações Matemáticas:** Peça dois números e exiba o resultado da soma, subtração, multiplicação e divisão.\n9. **Manipulação de Strings (Maiúsculas e Minúsculas):** Receba uma palavra do usuário e imprima-a em maiúsculas e minúsculas.\n10. **Calculadora de Área de um Quadrado:** Solicite o lado de um quadrado e calcule sua área e seu perímetro.\n\n## 🔷 Nível Júnior (Dia 11-21)\n\n**Foco:** Estruturas de controle (if/else, loops), listas, dicionários e funções básicas.\n\n11. **Tabuada de Multiplicação:** Peça um número ao usuário e exiba a tabuada de multiplicação desse número de 1 a 10.\n12. **Contador de Vogais:** Crie um programa que conte o número de vogais em uma string fornecida pelo usuário.\n13. **Inversor de Palavras:** Escreva uma função que receba uma string e a retorne invertida. Ex: \"python\" -\u003e \"nohtyp\".\n14. **Lista de Compras:** Crie um programa que permita ao usuário adicionar e remover itens de uma lista de compras. Ao final, exiba a lista completa.\n15. **Verificador de Palíndromo:** Desenvolva um programa que verifique se uma palavra é um palíndromo (lê-se da mesma forma de trás para frente).\n16. **Encontrando o Maior Número:** Escreva uma função que receba uma lista de números e retorne o maior valor.\n17. **Agenda de Contatos Simples:** Crie um dicionário para armazenar nomes e números de telefone. Permita que o usuário adicione e procure por contatos.\n18. **Sequência de Fibonacci:** Gere os primeiros N números da sequência de Fibonacci, onde N é informado pelo usuário.\n19. **Adivinhe o Número:** Crie um jogo simples onde o computador \"pensa\" em um número entre 1 e 100, e o usuário tem que adivinhar. O programa deve dar dicas (maior/menor).\n20. **Função de Fatorial:** Escreva uma função que calcule o fatorial de um número inteiro não negativo.\n21. **Filtrando Números Pares:** Crie uma função que receba uma lista de números e retorne uma nova lista contendo apenas os números pares.\n\n# 🔶 Nível Pleno (Dia 22-32)\n\n**Foco:** Funções avançadas (args, kwargs), manipulação de arquivos, list comprehensions e introdução à Orientação a Objetos (POO).\n\n22. **Contador de Frequência de Palavras:** Crie um programa que leia um arquivo de texto (.txt) e conte a frequência de cada palavra, exibindo as mais comuns.\n23. **List Comprehension para Múltiplos:** Use list comprehension para criar uma lista de todos os números entre 1 e 100 que são divisíveis por 7.\n24. **Calculadora com Funções:** Refatore a calculadora do nível iniciante usando funções separadas para cada operação (soma, subtração, etc.).\n25. **Gerador de Senhas Aleatórias:** Crie uma função que gere uma senha aleatória com um comprimento específico, contendo letras maiúsculas, minúsculas, números e símbolos.\n26. **Classe Carro:** Crie uma classe chamada Carro com os atributos marca, modelo e ano. Adicione métodos para ligar(), desligar() e acelerar().\n27. **Manipulação de JSON:** Crie um programa que leia um arquivo JSON contendo dados de usuários e permita buscar um usuário por email.\n28. **Função com** * **args:** Escreva uma função soma_ilimitada que aceite um número indefinido de argumentos numéricos e retorne a soma de todos eles.\n29. **Herança em POO:** Crie uma classe Veiculo com atributos e métodos genéricos. Em seguida, crie as classes Carro e Moto que herdem de Veiculo e adicionem seus próprios atributos e métodos.\n30. **Lambda para Ordenação:** Use uma função lambda para ordenar uma lista de dicionários com base no valor de uma chave específica (ex: ordenar por 'idade').\n31. **Validador de CPF (Formato):** Crie uma função que verifique se uma string de CPF está no formato correto (XXX.XXX.XXX-XX) usando manipulação de strings.\n32. **Logger Simples:** Crie um programa que escreva mensagens de log (com data e hora) em um arquivo log.txt cada vez que uma determinada função for chamada.\n\n🔥 Nível Sênior (Dia 33-43)\n\n**Foco:** POO avançado, tratamento de exceções, decoradores, geradores e módulos/bibliotecas.\n\n33. **Decorador de Tempo de Execução:** Crie um decorador que meça o tempo de execução de uma função e imprima o resultado.\n34. **Tratamento de Exceções:** Modifique o programa de \"Soma Simples\" (questão 2) para garantir que ele não quebre se o usuário digitar um valor não numérico, usando try e except.\n35. **Gerador de Sequência de Fibonacci:** Implemente a sequência de Fibonacci usando um gerador (yield) para otimizar o uso de memória.\n36. **Context Manager para Arquivos:** Crie um gerenciador de contexto (with open(...)) personalizado usando uma classe com os métodos __enter__ e __exit__.\n37. **Consumo de API:** Escreva um script que faça uma requisição a uma API pública (ex: API de cotação de moedas ou de previsão do tempo) e exiba os dados de forma legível.\n38. **Validador de CPF (Algoritmo):** Aprimore o validador de CPF (questão 31) para verificar se os dígitos verificadores são válidos de acordo com o algoritmo oficial.\n39. **Expressões Regulares (Regex):** Crie uma função que use expressões regulares para extrair todos os endereços de e-mail de um bloco de texto.\n40. **Programação Assíncrona (asyncio):** Escreva um script simples usando asyncio e aiohttp para fazer o download de múltiplas páginas da web de forma concorrente.\n41. **Metaclasses:** Crie uma metaclasse que garanta que qualquer classe que a utilize tenha certos métodos obrigatórios implementados.\n42. **Polimorfismo em Ação:** Crie um sistema onde diferentes classes (ex: Cachorro, Gato) herdam de uma classe Animal e implementam um método fazer_som() de maneiras diferentes.\n43. **Interface de Linha de Comando (CLI):** Usando a biblioteca argparse ou click, crie uma ferramenta de linha de comando que execute uma das funcionalidades que você já criou (ex: gerador de senhas).\n\n## 🚀 Projetos para Portfólio (Dia 44-50)\n\n**Foco:** Aplicação prática e integrada de conhecimentos para criar soluções completas.\n\n44. **Web Scraper de Notícias:** Desenvolva um web scraper usando BeautifulSoup e Requests para extrair os títulos e links das principais notícias de um portal de sua escolha e salvar os resultados em um arquivo CSV.\n45. **API REST com Flask/Django:** Crie uma API REST simples para gerenciar uma lista de tarefas (CRUD - Create, Read, Update, Delete). A API deve ter endpoints para listar todas as tarefas, adicionar uma nova, atualizar e deletar.\n46. **Bot para Discord/Telegram:** Desenvolva um bot que responda a comandos básicos. Por exemplo, um comando !cotação dolar que busca a cotação atual usando uma API e responde no chat.\n47. **Analisador de Dados Financeiros:** Utilize a biblioteca Pandas e Matplotlib para ler um arquivo CSV com dados históricos de ações (ex: PETR4.SA), calcular a média móvel e gerar um gráfico simples da evolução do preço de fechamento.\n48. **Aplicação de Lista de Tarefas (To-Do List) com Interface Gráfica:** Crie um aplicativo de desktop com uma interface gráfica (usando Tkinter ou PyQt) que permita ao usuário gerenciar suas tarefas diárias.\n49. **Automatizador de Tarefas com Selenium:** Crie um script que automatize uma tarefa repetitiva na web, como preencher um formulário de login ou baixar relatórios de um sistema web.\n50. **Blog Simples com Banco de Dados:** Desenvolva uma aplicação web completa de um blog usando um framework como Django ou Flask. A aplicação deve permitir criar, editar e deletar posts, além de ter um sistema de comentários e armazenamento em um banco de dados (SQLite ou PostgreSQL).\n\n## 💻 Como Utilizar Este Repositório\n\nClonar o repositório:\n\n```Bash\ngit clone https://github.com/selrahcsan/50-dias-de-Python.git\n```\n\nNavegue até o diretório:\n\n```Bash\ncd 50-dias-de-Python\n```\n\n## 🤔 Escolha um desafio e comece a codificar!\nCrie um arquivo Python para cada solução (ex: *desafio_01.py, desafio_02.py*).\n\n## Tente resolver o problema sozinho antes de procurar por soluções. A dificuldade faz parte do aprendizado!\n\n##  😎 Teste e refatore seu código:\n\nApós chegar a uma solução, revise seu código. Ele está legível? Pode ser mais eficiente? Há casos extremos que não foram tratados?\n\n## 📝 Use Git para salvar seu progresso:\n\nFaça commits regulares das suas soluções. Isso é uma ótima prática para se acostumar com o fluxo de trabalho de desenvolvimento.\n\n```Bash\ngit add .\ngit commit -m \"Solução para o desafio 05: Verificador de Palíndromo\"\n```\n\n🛠️ Ferramentas e Conceitos Abordados\n\n\n🤝 Como Contribuir\n\nContribuições são o que tornam a comunidade de código aberto um lugar incrível para aprender e criar. Qualquer contribuição que você fizer será muito apreciada.\n\n* Faça um Fork do projeto.\n* Crie uma Branch para sua feature (git checkout -b feature/NovaFeature).\n* Faça o Commit de suas alterações (git commit -m 'Adiciona NovaFeature').\n* Faça o Push para a Branch (git push origin feature/NovaFeature).\n* Abra um Pull Request.\n\n## 😌 Sugestões de contribuição\n\n* Correção de erros de digitação.\n* Sugestão de novos desafios.\n* Melhora na descrição dos desafios existentes.\n\n## 📄 Licença\n\nDistribuído sob a licença GPL-3.0 license.\nVeja LICENSE para mais informações.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselrahcsan%2F50-dias-de-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fselrahcsan%2F50-dias-de-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselrahcsan%2F50-dias-de-python/lists"}