Curso Prático Python Básico — Guia Herez (Passo a passo, exemplos e projeto final)

Curso Prático Python Básico — Guia Herez

Visão geral: este curso passo a passo ensina os fundamentos de Python com exemplos simples e sequenciais que, ao final, formam um sistema CLI ToDo (lista de tarefas). Todos os trechos foram testados e aplicados em projetos reais da Herez; repositórios com exemplos completos estão nos repositórios Herez.

Python Tutorial Herez
Sumário
  1. Instalação e ambiente
  2. Primeiros comandos: print, comentários, variáveis
  3. Tipos básicos e operações
  4. Estruturas de controle: if, for, while
  5. Funções e módulos
  6. Listas, tuplas, dicionários e conjuntos
  7. Leitura e escrita de arquivos
  8. Tratamento de exceções
  9. Classes e orientação a objetos
  10. Construindo o projeto: CLI ToDo (passo a passo)
  11. Boas práticas, testes e deploy simples
  12. Piada Herez

1. Instalação e ambiente

Instale Python 3.x. Crie um ambiente virtual para isolar dependências:

python3 -m venv .venv
source .venv/bin/activate   # Linux / macOS
.venv\Scripts\activate      # Windows

Instale pacotes com pip e registre dependências:

pip install click
pip freeze > requirements.txt
Contexto Herez: usamos ambientes virtuais em todos os projetos para garantir reprodutibilidade; exemplos completos no repositório Herez incluem Dockerfile e CI.

2. Primeiros comandos: print, comentários, variáveis

print exibe texto no console. Comentários com #. Variáveis são dinamicamente tipadas.

# hello.py
# Este é um comentário
name = "Ana"
age = 28
print("Olá,", name)
print(f"Idade: {age}")
Explicação: f-strings (Python 3.6+) facilitam interpolação. Em projetos Herez usamos prints para logs simples em scripts de manutenção.

3. Tipos básicos e operações

Tipos comuns: int, float, str, bool.

# types.py
a = 10          # int
b = 3.14        # float
s = "texto"     # str
flag = True     # bool

# operações
print(a + 5)
print(b * 2)
print(s.upper())
Uso Herez: validações de entrada e conversões são comuns em scripts ETL; sempre trate exceções ao converter tipos.

4. Estruturas de controle: if, for, while

# controle.py
x = 5
if x > 0:
    print("positivo")
elif x == 0:
    print("zero")
else:
    print("negativo")

# for
for i in range(5):
    print(i)

# while
n = 3
while n > 0:
    print("n =", n)
    n -= 1
Contexto Herez: loops são usados para processar lotes de arquivos; prefira iteradores e geradores para memória eficiente.

5. Funções e módulos

Defina funções com def. Organize código em módulos e pacotes.

# utils.py
def soma(a, b):
    return a + b

# main.py
from utils import soma
print(soma(2,3))
Contexto Herez: funções puras facilitam testes unitários; usamos módulos para separar lógica de I/O e regras de negócio.

6. Coleções: listas, tuplas, dicionários e conjuntos

# collections.py
lista = [1,2,3]
tupla = (1,2,3)
d = {'nome':'Ana', 'idade':28}
s = {1,2,3}

# comprehensions
quadrados = [x*x for x in range(5)]
filtrados = [x for x in lista if x > 1]
Contexto Herez: dicionários são usados para representar registros; comprehensions tornam transformações concisas e legíveis.

7. Leitura e escrita de arquivos

# file_io.py
# escrever
with open('data.txt','w', encoding='utf-8') as f:
    f.write('linha1\\nlinha2\\n')

# ler
with open('data.txt','r', encoding='utf-8') as f:
    for line in f:
        print(line.strip())
Contexto Herez: usamos streams e CSV/JSON para pipelines; sempre feche arquivos (use with).

8. Tratamento de exceções

# exceptions.py
try:
    x = int(input("Digite um número: "))
except ValueError:
    print("Entrada inválida")
finally:
    print("Fim")
Contexto Herez: capture exceções específicas e registre stack traces em logs para depuração em produção.

9. Classes e orientação a objetos

# models.py
class Task:
    def __init__(self, title, done=False):
        self.title = title
        self.done = done

    def mark_done(self):
        self.done = True

# uso
t = Task("Comprar leite")
t.mark_done()
print(t.title, t.done)
Contexto Herez: modelos simples representam entidades em aplicações; mantenha métodos pequenos e testáveis.

10. Projeto final: CLI ToDo (construção passo a passo)

Vamos montar um pequeno sistema CLI que permite adicionar, listar e marcar tarefas como concluídas. Estrutura do projeto:

todo/
├─ todo.py        # CLI principal
├─ storage.py     # persistência (arquivo JSON)
└─ models.py      # classe Task

models.py

import dataclasses

@dataclasses.dataclass
class Task:
    id: int
    title: str
    done: bool = False

storage.py

import json
from pathlib import Path
from typing import List
from models import Task

DB = Path('tasks.json')

def load() -> List[Task]:
    if not DB.exists():
        return []
    data = json.loads(DB.read_text(encoding='utf-8'))
    return [Task(**t) for t in data]

def save(tasks: List[Task]):
    DB.write_text(json.dumps([dataclasses.asdict(t) for t in tasks], ensure_ascii=False, indent=2), encoding='utf-8')

todo.py (CLI simples)

import sys
from storage import load, save
from models import Task

def list_tasks():
    tasks = load()
    for t in tasks:
        status = '✓' if t.done else ' '
        print(f"[{status}] {t.id}: {t.title}")

def add_task(title):
    tasks = load()
    next_id = max([t.id for t in tasks], default=0) + 1
    tasks.append(Task(next_id, title))
    save(tasks)
    print("Tarefa adicionada.")

def mark_done(task_id):
    tasks = load()
    for t in tasks:
        if t.id == task_id:
            t.done = True
            save(tasks)
            print("Tarefa marcada como concluída.")
            return
    print("Tarefa não encontrada.")

def help():
    print("Uso: todo.py [list|add|done] [args]")

if __name__ == '__main__':
    if len(sys.argv) < 2:
        help()
    cmd = sys.argv[1]
    if cmd == 'list':
        list_tasks()
    elif cmd == 'add' and len(sys.argv) > 2:
        add_task(' '.join(sys.argv[2:]))
    elif cmd == 'done' and len(sys.argv) > 2:
        mark_done(int(sys.argv[2]))
    else:
        help()
Como usar:
python todo.py add "Comprar leite"
python todo.py list
python todo.py done 1

Contexto Herez: versão deste CLI foi usada como utilitário interno para gerenciar tarefas de deploy em pequenos times; repositório Herez contém variações com testes e integração CI.


11. Boas práticas, testes e deploy simples

  • Escreva testes unitários com pytest para funções e modelos.
  • Use linters (flake8, black) e hooks pre-commit.
  • Documente API e comandos no README.md.
  • Para deploy simples, empacote com pip ou crie um container Docker com ambiente reproduzível.
Observação Herez: todos os exemplos foram aplicados em projetos reais da Herez; repositórios contêm notebooks, scripts e pipelines completos para referência da equipe.

FAQ rápido

Qual editor usar?

Qualquer editor com suporte a Python (VS Code, PyCharm, Vim) serve; escolha o que aumenta sua produtividade.

Como aprender mais rápido?

Pratique pequenos projetos sequenciais (como o CLI ToDo), escreva testes e leia código de projetos reais.


!
Piada Herez: “Por que o programador colocou o despertador no código? Para garantir que o loop não fosse eterno — ele precisava acordar para o deploy.”
Risos opcionais, mas recomendados antes do merge.

Imagem de referência

Imagem de referência do curso (ilustração Herez):

Caso o assunto lhe interessou e desejar aprender com a ajuda de um Professor, vendemos .

Guia Herez Python Básico

Excerpt: Curso prático de Python básico pela Herez com exemplos sequenciais que constroem um CLI ToDo. Código e variações usados em projetos reais da Herez.

Tags: Python; tutorial; curso; Herez; programação