Prof. Gustavo Franz (Science/Biology) · Python Developer in Progress · Building Educational Solutions with Python
github.com/GustaFranz
Sou professor de Ciencias e Biologia desde 2013. Hoje estou em transicao para a area de tecnologia, estudando programacao de forma estruturada, consistente e publica.
Este repositorio nao e so uma lista de scripts: e um portfolio de evolucao — do primeiro print ate automacao com pandas, streamlit e bibliotecas reais. Sao 320 exercicios em 4 trilhas (150 resolvidos), cada um com pasta propria, README e codigo executavel.
Em uma frase: alguem que ja ensina, aprende com metodo e compartilha o caminho para ajudar outros.
Este repositório faz parte do meu processo de aprendizado em Python. Uso ferramentas de IA como apoio para revisão, edição de layouts dos materiais e tirar dúvidas, mas todos os códigos são estudados e escritos por mim.
|
Progressivos Fundamentos, intermediario, bibliotecas e materiais PDF |
Materiais de apoio Texto nitido, pronto para estudo e impressao |
Organizacao Pastas NN_snake_case, README por exercicio
|
Projeto publicado Biblioteca para cores no terminal |
Projeto integrando Python, dados geograficos e visualizacao interativa — simulacao de excursao escolar pela Serra da Capivara (PI).
|
49 — GeoExplorer Educacional Cadastro de pontos com latitude e longitude, exportacao em JSON e mapa HTML com Folium Abrir exercicio · Ver mapa interativo |
||
Relatorio Lista formatada no terminal |
Mapa geral Sete cidades e pontos no Piaui |
Detalhe do ponto Popup ao clicar no marcador |
Guias criados durante meus estudos — compartilhados para quem esta comecando. Clique no card ou em Baixar PDF para fazer o download.
Git para iniciantes Commits, branches, merge e fluxo de trabalho Baixar PDF · Comandos Git |
Dicionarios em Python Operacoes, metodos e exercicio pratico Baixar PDF · Ver pasta |
Listas em Python Indices, slice, sort/sorted, set e carrinho de compras Baixar PDF |
Tuplas em Python Imutabilidade, fatiamento e medias escolares Baixar PDF |
Tratamento de Strings em Python Metodos, validacoes e analisador de frases Baixar PDF |
|
EasyAnsi em Python Sintaxe, atalhos, logging e exercicio pratico Baixar PDF · Ver pasta |
Pathlib e Shutil em Python Caminhos, glob, mkdir, move e integracao com automacao Baixar PDF · Indice completo dos materiais |
|
Python
|
Logica e organizacao
|
Git e comunicacao
|
git clone https://github.com/GustaFranz/python_exercises.git
cd python_exercises/01_python_fundamentals # ou 02_intermediate_advanced / 03_python_libraries
cd 04_funcao_format # troque pela pasta do exercicio
python main.py- Clone o repositorio
- Entre na trilha (
01_,02_ou03_) e depois na pasta do exercicio - Execute o script com Python 3 (Streamlit:
streamlit run main.py; avaliacoes em03_: vejaperguntas.md)
Contagem atualizada com base no codigo preenchido em cada pasta (main.py com resolucao).
| Trilha | Resolvidos | Total | Progresso |
|---|---|---|---|
| 01 — Fundamentals | 147 | 160 | 92% |
| 02 — Intermediate | 0 | 143 | 0% |
| 03 — Libraries | 3 | 28 | 11% |
| Total | 150 | 331 | 45% |
Materiais de apoio: 7 guias PDF em 04_study_materials.
| Tema | Faixa | Resolvidos | Total |
|---|---|---|---|
| Fundamentos | 01-04 | 4 | 4 |
| Strings e numeros basicos | 05-07 | 3 | 3 |
| Conversoes e unidades | 08-13 | 6 | 6 |
| Matematica e geometria | 14-20 | 7 | 7 |
| Random, strings e jogos | 21-29 | 9 | 9 |
| Condicionais avancadas | 30-36 | 7 | 7 |
| Estruturas de dados e sistemas | 37-50 | 14 | 14 |
| Tuplas | 51-60 | 11 | 11 |
| Listas | 61-73 | 13 | 13 |
| Dicionarios | 74-86 | 13 | 13 |
| Funcoes | 87-95 | 9 | 9 |
| Funcoes lambda | 96-109 | 14 | 14 |
| Modulos e pacotes | 110-115 | 6 | 6 |
| Bibliotecas | 116-121 | 6 | 6 |
| Manipulacao de dados | 122-126 | 5 | 5 |
| APIs | 127-130 | 0 | 4 |
| Tratamento de excecoes | 131-135 | 5 | 5 |
| Match/case — validacao de dados | 136-150 | 15 | 15 |
| Funcoes com *args | 151-153 | 0 | 3 |
| Funcoes com **kwargs | 154-156 | 0 | 3 |
| Desafio de funcoes | 157 | 0 | 1 |
| Funcao de ordem superior | 158-159 | 0 | 2 |
| Subtotal 01 | 147 | 160 |
| Tema | Faixa | Resolvidos | Total |
|---|---|---|---|
| List comprehension | 01-05 | 0 | 5 |
| Dict comprehension | 06-10 | 0 | 5 |
| Conjuntos set | 11-15 | 0 | 5 |
| Zip e estruturas cruzadas | 16-20 | 0 | 5 |
| CRUD lista de dicionarios | 21-25 | 0 | 5 |
| Desafio integrador | 26 | 0 | 1 |
| Merge de duas fontes | 27-31 | 0 | 5 |
| Persistencia JSON | 32-36 | 0 | 5 |
| CSV leitura e escrita | 37-41 | 0 | 5 |
| Desafio integrador | 42 | 0 | 1 |
| Context manager with open | 43-47 | 0 | 5 |
| Excecao customizada e raise | 48-52 | 0 | 5 |
| Try except else finally | 53-57 | 0 | 5 |
| Desafio integrador | 58 | 0 | 1 |
| Regex com re | 59-63 | 0 | 5 |
| Recursao | 64-68 | 0 | 5 |
| Closure | 69-73 | 0 | 5 |
| Desafio integrador | 74 | 0 | 1 |
| Mini-projeto multi-modulo | 75-79 | 0 | 5 |
| Argparse CLI | 80-84 | 0 | 5 |
| Logging | 85-89 | 0 | 5 |
| Desafio integrador | 90 | 0 | 1 |
| API com tratamento HTTP | 91-95 | 0 | 5 |
| Counter e defaultdict | 96-100 | 0 | 5 |
| Classe simples | 101-105 | 0 | 5 |
| Desafio elaborado | 106 | 0 | 1 |
| Heranca simples | 107-111 | 0 | 5 |
| Dataclass | 112-116 | 0 | 5 |
| Refatoracao | 117-121 | 0 | 5 |
| Testes com assert | 122-126 | 0 | 5 |
| Type hints basicos | 127-131 | 0 | 5 |
| Desafio elaborado | 132 | 0 | 1 |
| map() e comprehensions | 133-136 | 0 | 4 |
| List e dict comprehension juntas | 137-139 | 0 | 3 |
| Funcoes geradoras | 140-143 | 0 | 4 |
| Subtotal 02 | 0 | 143 |
| Tema | Faixa | Resolvidos | Total |
|---|---|---|---|
| Pathlib, Shutil e leitura | 01-13 | 3 | 13 |
| Consolidacao e indicadores | 14-20 | 0 | 7 |
| Saida, interface e automacao | 21-28 | 0 | 8 |
| Subtotal 03 | 3 | 28 |
Pendencias principais em 01: APIs (127-130) e blocos de *args / **kwargs / ordem superior (151-159). Em 03: pathlib 01-03 ja resolvidos; restante em aberto.
Indice detalhado dos fundamentos abaixo. Demais trilhas:
| Area | Resolvidos | Total | Link |
|---|---|---|---|
| 01 — Fundamentals | 147 | 160 | Indice |
| 02 — Intermediate | 0 | 143 | Indice |
| 03 — Libraries | 3 | 28 | Indice |
| 04 — Study Materials | — | 7 guias PDF | Indice |
Total: 150 resolvidos de 320 exercicios + materiais de apoio.
Fundamentos (01-04) — 4/4
| # | Exercicio | Link |
|---|---|---|
| 01 | Meu primeiro codigo | Abrir |
| 02 | Soma de dois numeros | Abrir |
| 03 | Comandos de decisao | Abrir |
| 04 | Funcao format | Abrir |
Strings e numeros basicos (05-07) — 3/3
| # | Exercicio | Link |
|---|---|---|
| 05 | Strings maiusculas | Abrir |
| 06 | Strings minuscula | Abrir |
| 07 | Antecessor e sucessor | Abrir |
Conversoes e unidades (08-13) — 6/6
| # | Exercicio | Link |
|---|---|---|
| 08 | Conversao do sistema metrico decimal | Abrir |
| 09 | Conversao de volume em litros | Abrir |
| 10 | Capacidade em litros | Abrir |
| 11 | Converter Celsius para Kelvin | Abrir |
| 12 | Converter Fahrenheit para Kelvin | Abrir |
| 13 | Converter Celsius para Fahrenheit | Abrir |
Matematica e geometria (14-20) — 7/7
| # | Exercicio | Link |
|---|---|---|
| 14 | Permissao de passagem de veiculos | Abrir |
| 15 | Aluguel de carros | Abrir |
| 16 | Parte inteira de numero real | Abrir |
| 17 | Hipotenusa do triangulo | Abrir |
| 18 | Seno, cosseno e tangente | Abrir |
| 19 | Area e perimetro | Abrir |
| 20 | Calculadora de IMC | Abrir |
Random, strings e jogos (21-29) — 9/9
| # | Exercicio | Link |
|---|---|---|
| 21 | Sorteio de um aluno | Abrir |
| 22 | Sorteio da ordem de apresentacao | Abrir |
| 23 | Analisador de textos | Abrir |
| 24 | Separador de digitos | Abrir |
| 25 | Nome da cidade | Abrir |
| 26 | Contem Silva | Abrir |
| 27 | Analisador de frase | Abrir |
| 28 | Primeiro e ultimo nome | Abrir |
| 29 | Advinhe o numero | Abrir |
Condicionais avancadas (30-36) — 7/7
| # | Exercicio | Link |
|---|---|---|
| 30 | Controle de velocidade | Abrir |
| 31 | Par ou impar | Abrir |
| 32 | Calculo do preco da passagem | Abrir |
| 33 | Ano bissexto | Abrir |
| 34 | Maior e menor numero | Abrir |
| 35 | Aumento salarial | Abrir |
| 36 | Condicao de existencia do triangulo | Abrir |
Estruturas de dados e sistemas (37-50) — 14/14
| # | Exercicio | Link |
|---|---|---|
| 37 | Sistema de medias da turma | Abrir |
| 38 | Analisador de gastos mensais | Abrir |
| 39 | Tabuada inteligente | Abrir |
| 40 | Classificador de palavras | Abrir |
| 41 | Simulador de presenca escolar | Abrir |
| 42 | Sistema de frequencia com relatorio | Abrir |
| 43 | Cadastro de alunos | Abrir |
| 44 | Simulador de caixa de supermercado | Abrir |
| 45 | Monitor de temperatura com alerta | Abrir |
| 46 | Controle de acesso com bloqueio | Abrir |
| 47 | Sistema de comandos no console | Abrir |
| 48 | Registro de disciplinas | Abrir |
| 49 | Registro de coordenadas de campo | Abrir |
| 50 | Ranking imutavel de alunos | Abrir |
Tuplas (51-60) — 11/11
| # | Exercicio | Link |
|---|---|---|
| 51 | Catalogo de produtos fixos | Abrir |
| 52 | Registro de sessoes de estudo | Abrir |
| 53 | Criar tupla basica | Abrir |
| 54 | Acessar elementos da tupla | Abrir |
| 55 | Fatiar tupla | Abrir |
| 56A | Percorrer tupla | Abrir |
| 56B | Materiais escolares em tupla | Abrir |
| 57 | Desempacotar tupla | Abrir |
| 58 | Boletim de medias com tuplas | Abrir |
| 59 | Registro de temperaturas com tuplas | Abrir |
| 60 | Catalogo de precos com tuplas | Abrir |
Listas (61-73) — 13/13
| # | Exercicio | Link |
|---|---|---|
| 61 | Criar lista basica | Abrir |
| 62 | Acessar elementos da lista | Abrir |
| 63 | Adicionar e remover itens da lista | Abrir |
| 64 | Fatiar lista | Abrir |
| 65 | Ordenar lista | Abrir |
| 66 | Verificar item na lista | Abrir |
| 67 | Percorrer lista com enumerate | Abrir |
| 68 | Analise de notas com filtragem | Abrir |
| 69 | Limpeza de dados de vendas | Abrir |
| 70 | Classificador de palavras por tamanho | Abrir |
| 71 | Controle de presenca com correcao | Abrir |
| 72 | Analisador de desempenho de posts | Abrir |
| 73 | Otimizacao de lista de tarefas | Abrir |
Dicionarios (74-86) — 13/13
| # | Exercicio | Link |
|---|---|---|
| 74 | Criar dicionario basico | Abrir |
| 75 | Acessar valores do dicionario | Abrir |
| 76 | Adicionar e atualizar dicionario | Abrir |
| 77 | Percorrer dicionario | Abrir |
| 78 | Verificar chave no dicionario | Abrir |
| 79 | Remover chave do dicionario | Abrir |
| 80 | Listar chaves e valores do dicionario | Abrir |
| 81 | Sistema de notas por aluno | Abrir |
| 82 | Controle de estoque de loja | Abrir |
| 83 | Analise de engajamento de posts | Abrir |
| 84 | Cadastro de alunos com multiplas infos | Abrir |
| 85 | Avaliacao de produtos | Abrir |
| 86 | Controle de frequencia por disciplina | Abrir |
Funcoes (87-95) — 9/9
| # | Exercicio | Link |
|---|---|---|
| 87 | Criar funcao simples | Abrir |
| 88 | Funcao com parametro | Abrir |
| 89 | Funcao com retorno | Abrir |
| 90 | Funcao com parametro padrao | Abrir |
| 91 | Calculadora de desempenho escolar | Abrir |
| 92 | Simulador de orcamento mensal | Abrir |
| 93 | Validacao de senha | Abrir |
| 94 | Analise de texto | Abrir |
| 95 | Gerador de relatorios de turma | Abrir |
Funcoes com *args (151-153) — 0/3
| # | Exercicio | Link |
|---|---|---|
| 151 | Funcao com *args: soma variavel | Abrir |
| 152 | Funcao com *args: media de notas | Abrir |
| 153 | Funcao com *args: relatorio do aluno | Abrir |
Funcoes com **kwargs (154-156) — 0/3
| # | Exercicio | Link |
|---|---|---|
| 154 | Funcao com **kwargs: perfil do aluno | Abrir |
| 155 | Funcao com **kwargs: mensagem personalizada | Abrir |
| 156 | Funcao com **kwargs: registro de presenca | Abrir |
Desafio de funcoes (157) — 0/1
| # | Exercicio | Link |
|---|---|---|
| 157 | Desafio: sistema de pedidos com tres funcoes | Abrir |
Funcao de ordem superior (158-159) — 0/2
| # | Exercicio | Link |
|---|---|---|
| 158 | Funcao de ordem superior: filtrar com lambda interna | Abrir |
| 159 | Funcao de ordem superior: transformar com lambda interna | Abrir |
Funcoes lambda (96-109) — 14/14
| # | Exercicio | Link |
|---|---|---|
| 96 | Lambda simples | Abrir |
| 97 | Lambda com dois parametros | Abrir |
| 98 | Lambda com condicao | Abrir |
| 99 | Ordenar produtos com lambda | Abrir |
| 100 | Filtrar aprovados com lambda | Abrir |
| 101 | Reajuste de precos com lambda | Abrir |
| 102 | Ordenar disciplinas com lambda | Abrir |
| 103 | Ordenar ranking com lambda | Abrir |
| 104 | Filtrar numeros grandes com lambda | Abrir |
| 105 | Filtrar palavras longas com lambda | Abrir |
| 106 | Dobrar numeros com map e lambda | Abrir |
| 107 | Capitalizar nomes com map e lambda | Abrir |
| 108 | Arredondar medias com lambda | Abrir |
| 109 | Arredondar precos com lambda | Abrir |
Modulos e pacotes (110-115) — 6/6
| # | Exercicio | Link |
|---|---|---|
| 110 | Calculadora modular | Abrir |
| 111 | Analise de notas com modulos | Abrir |
| 112 | Organizador de arquivos por modulos | Abrir |
| 113 | Cadastro de alunos modular | Abrir |
| 114 | Analise de vendas com modulos | Abrir |
| 115 | Modulos em pacotes | Abrir |
Bibliotecas (116-121) — 6/6
| # | Exercicio | Link |
|---|---|---|
| 116 | Planejamento de estudos com datas | Abrir |
| 117 | Gerador de numeros para questoes | Abrir |
| 118 | Simulador de sorteio de alunos | Abrir |
| 119 | Analisador de texto com biblioteca padrao | Abrir |
| 120 | Tempo de execucao de tarefas | Abrir |
| 121 | Analisador de estatisticas com NumPy | Abrir |
Manipulacao de dados (122-126) — 5/5
| # | Exercicio | Link |
|---|---|---|
| 122 | Limpeza de base de dados de alunos | Abrir |
| 123 | Analise de vendas com estrutura de dados | Abrir |
| 124 | Agrupamento de usuarios por idade | Abrir |
| 125 | Transformacao de dados para relatorio | Abrir |
| 126 | Consolidacao de registros de sensores | Abrir |
APIs (127-130) — 0/4
| # | Exercicio | Link |
|---|---|---|
| 127 | Consulta de clima via API | Abrir |
| 128 | Cotacao de moeda em tempo real | Abrir |
| 129 | Consulta de livros via API | Abrir |
| 130 | Gerador de fatos aleatorios | Abrir |
Tratamento de excecoes (131-135) — 5/5
| # | Exercicio | Link |
|---|---|---|
| 131 | Entrada segura de notas | Abrir |
| 132 | Leitor seguro de divisao | Abrir |
| 133 | Leitura de arquivos protegida | Abrir |
| 134 | Validador de idade para cadastro | Abrir |
| 135 | Login seguro com controle de erro | Abrir |
Match/case — validacao de dados (136-150) — 15/15
| # | Exercicio | Link |
|---|---|---|
| 136 | Validador de conceito escolar com match/case | Abrir |
| 137 | Classificador de rendimento do aluno | Abrir |
| 138 | Nivel de desempenho na biblioteca escolar | Abrir |
| 139 | Validador de categoria etaria | Abrir |
| 140 | Categoria de matricula escolar | Abrir |
| 141 | Etapa educacional no cadastro de alunos | Abrir |
| 142 | Validador de forma de pagamento | Abrir |
| 143 | Confirmador de venda na cantina | Abrir |
| 144 | Registro de pagamento na loja escolar | Abrir |
| 145 | Validador de tipo de passagem | Abrir |
| 146 | Classificador de transporte municipal | Abrir |
| 147 | Controle de acesso ao transporte escolar | Abrir |
| 148 | Confirmacao de presenca com alternativas ( | ) |
| 149 | Classificador de dia da semana com ( | ) |
| 150 | Status de solicitacao escolar com ( | ) |
Atalhos rapidos (indice completo em cada pasta):
| Area | Nivel | Resolvidos | Total | Link |
|---|---|---|---|---|
| 02 — Intermediate Advanced | Intermediario | 0 | 143 | Indice completo |
| 03 — Python Libraries | Bibliotecas e automacao | 3 | 28 | Indice completo |
| 04 — Study Materials | Guias PDF de apoio | — | 7 guias | Indice completo |
|
EasyAnsi Formatacao colorida no terminal — zero dependencias, docs em 4 idiomas |
python_exercises Portfolio de evolucao com exercicios documentados e materiais PDF |
| Onde | Regra |
|---|---|
| Pastas | NN_snake_case — numero + nome sem espacos e sem acentos (sufixo A/B para exercicios complementares, ex.: 56A, 56B) |
| READMEs | Titulos (headings) sem acentos, para ancoras e links simples; textos corridos podem usar acentos normalmente |
| Codigo Python | Mensagens ao usuario podem usar acentos; comentarios seguem PEP 8 |
| Secoes | Objetivo, Enunciado e Como executar em cada exercicio |
python_exercises/
├── LICENSE
├── README.md
├── 01_python_fundamentals/
│ ├── README.md
│ └── NN_nome_exercicio/
│ ├── README.md
│ └── main.py # 160 exercicios (147 resolvidos)
├── 02_intermediate_advanced/
│ ├── README.md
│ └── NN_nome_exercicio/ # 143 exercicios (0 resolvidos)
│ ├── README.md
│ └── main.py
├── 03_python_libraries/
│ ├── README.md
│ ├── requirements.txt
│ ├── progresso.md
│ └── NN_nome_exercicio/ # 28 exercicios (3 resolvidos)
│ ├── README.md
│ ├── main.py
│ └── dados/ # quando aplicavel
└── 04_study_materials/
├── README.md
├── gerar_todos.py # gera todos os PDFs (ReportLab)
├── requirements.txt # reportlab, PyMuPDF, Pillow
├── gerador/ # motor + conteudo SPEC
├── _gerar_previews.py # cards PNG para o README
├── _gerar_banner.py
├── assets/ # banner e cards (previews dos PDFs)
├── easyansi/
├── git/
└── python/
Para regenerar os guias PDF e os cards apos editar conteudo:
pip install -r 04_study_materials/requirements.txt
python 04_study_materials/gerar_todos.py
python 04_study_materials/_gerar_previews.pyDetalhes em 04_study_materials/README.md.
Sugestoes sao bem-vindas! Abra uma issue ou envie um Pull Request.
Quem estuda com perseveranca e confia em Deus, sempre vence!
Prof. Gustavo Franz
