Skip to content

Repository files navigation

🐍 Estudos Python — Engenharia de Software & Práticas Corporativas

Python PEP 8 Type Hints License

Repositório curado com foco em algoritmos, código idiomático (Pythonic), Programação Orientada a Objetos (POO) e padrões de segurança em produção. Desenvolvido por Jonas Klimaitis como parte dos estudos de engenharia de software e consolidação técnica para desenvolvimento backend.

🚀 Aplicação Prática no Mundo Real: Todos os princípios de modelagem orientada a objetos, validação de regras de negócio, tipagem estática e gestão segura de credenciais demonstrados neste repositório servem como fundação técnica aplicada diretamente no projeto principal: Projeto_Carros (plataforma SaaS em Django para gestão e precificação de veículos).


📂 Estrutura Modular do Repositório

Estudos_Python/
├── 01-logica-e-algoritmos/             # 15 Desafios Algorítmicos (Tipados & PEP 8)
│   ├── 01_soma_numeros.py              # Entrada, conversão de tipos e aritmética
│   ├── 02_media_escolar.py             # Média simples com múltiplos argumentos
│   ├── 03_conversao_temperatura.py     # Conversão analítica Celsius <-> Fahrenheit
│   ├── 04_calculadora_desconto.py      # Cálculo percentual e arredondamento comercial
│   ├── 05_par_ou_impar.py              # Operador de módulo (%) e paridade
│   ├── 06_maior_de_dois.py             # Operadores relacionais e bifurcação condicional
│   ├── 07_verificacao_aprovacao.py     # Lógica condicional de aprovação
│   ├── 08_classificacao_idade.py       # Encadeamento condicional (if-elif-else)
│   ├── 09_calculadora_imc.py           # Fórmula de IMC com classificação da OMS
│   ├── 10_tabuada.py                   # Laços 'for' e range() com saída tabulada
│   ├── 11_contagem_regressiva.py       # Laço decrescente e controle de tempo
│   ├── 12_soma_ate_n.py                # Acumulador em laço vs. Fórmula de Gauss O(1)
│   ├── 13_media_com_recuperacao.py     # Lógica de notas com recuperação escolar
│   ├── 14_positivo_negativo_zero.py    # Classificação de sinal de números reais
│   └── 15_calculadora_simples.py       # Despacho de operações aritméticas com Match-Case
│
├── 02-python-idiomatico/               # Escrita Eficiente e Funcionalidades Modernas
│   ├── list_comprehensions.py          # Transformação, filtragem e benchmark de performance
│   ├── dicionarios_avancados.py        # Acesso seguro (.get), Dict Comprehension e operador '|'
│   └── manipulacao_strings.py          # Slicing, sanitização de inputs, split/join e f-strings
│
├── 03-orientacao-a-objetos/            # POO Corporativa e Domínio de Negócio
│   ├── heranca_e_polimorfismo.py       # Classes Abstratas (ABC), super() e Polimorfismo
│   └── modelagem_veicular.py           # Modelo de Domínio Automotivo (Base do Projeto_Carros)
│
└── 04-configuracao-e-seguranca/        # Práticas de Nuvem e Produção (12-Factor App)
    ├── .env.example                    # Template de variáveis de ambiente
    └── variaveis_ambiente_demo.py      # os.getenv, fallbacks, mascaramento e segurança no Git

🎯 Destaques de Engenharia por Módulo

1. Lógica & Algoritmos (01-logica-e-algoritmos)

  • Funções Puras com Type Hints: Todas as soluções foram estruturadas como funções reutilizáveis, com anotações de tipo explícitas (PEP 484) facilitando a manutenção e análise estática (mypy).
  • Tratamento Defensivo de Exceções: Uso de blocos try-except para capturar ValueError e ZeroDivisionError em entradas de usuário.
  • Complexidade Algorítmica: No exercício 12, comparação prática entre um acumulador iterativo $O(n)$ e a soma analítica de Gauss $O(1)$.

2. Python Idiomático (02-python-idiomatico)

  • List Comprehensions vs. Loops: Demonstração prática do ganho de performance gerado por compreensões (executadas diretamente a nível de bytecode C).
  • Estruturas Hash Map: Acesso resiliente a dicionários com .get(chave, default) para evitar falhas KeyError, e fusão com o operador de união dict_a | dict_b (Python 3.9+).
  • Sanitização de Strings: Limpeza de entradas de texto, inversão de strings via slicing [::-1] e formatação de valores monetários.

3. Orientação a Objetos (03-orientacao-a-objetos)

  • Contratos Abstratos: Uso do módulo nativo abc (ABC e @abstractmethod) para padronizar canais de notificação.
  • Modelagem de Domínio Automotivo: A classe Veiculo implementa o padrão @property para calcular de forma transparente custo total, lucro bruto e margem percentual, servindo de base arquitetural para o Projeto_Carros.

4. Configuração & Segurança (04-configuracao-e-seguranca)

  • Princípios do 12-Factor App: Separação estrita entre código-fonte e credenciais de infraestrutura via variáveis de ambiente.
  • Prevenção contra Vazamentos: Demonstração de mascaramento de chaves privadas em logs de auditoria e uso de arquivos .env.example.

🛠️ Como Executar os Exemplos

Todos os módulos utilizam exclusivamente a biblioteca padrão do Python (sem dependências externas obrigatórias).

1. Clonar o repositório

git clone https://github.com/Jklimaitis/Estudos_Python.git
cd Estudos_Python

2. Executar Exercícios de Lógica

python 01-logica-e-algoritmos/01_soma_numeros.py
python 01-logica-e-algoritmos/09_calculadora_imc.py
python 01-logica-e-algoritmos/15_calculadora_simples.py

3. Executar Módulos Idiomáticos

python 02-python-idiomatico/list_comprehensions.py
python 02-python-idiomatico/dicionarios_avancados.py
python 02-python-idiomatico/manipulacao_strings.py

4. Executar POO & Domínio Veicular

python 03-orientacao-a-objetos/heranca_e_polimorfismo.py
python 03-orientacao-a-objetos/modelagem_veicular.py

5. Executar Gestão de Variáveis de Ambiente

python 04-configuracao-e-seguranca/variaveis_ambiente_demo.py

👤 Autor

Jonas Klimaitis

  • Estudante de Pós-Graduação em Engenharia de Software
  • Foco: Python, Django, FastAPI, Java, PostgreSQL, Docker e Arquitetura de Software.
  • Portfólio Principal: Projeto_Carros (SaaS Automotivo)
  • GitHub: @Jklimaitis

Licença MIT — Livre para fins educacionais e profissionais.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages