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.
- Instalação e ambiente
- Primeiros comandos: print, comentários, variáveis
- Tipos básicos e operações
- Estruturas de controle: if, for, while
- Funções e módulos
- Listas, tuplas, dicionários e conjuntos
- Leitura e escrita de arquivos
- Tratamento de exceções
- Classes e orientação a objetos
- Construindo o projeto: CLI ToDo (passo a passo)
- Boas práticas, testes e deploy simples
- 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
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}")
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())
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
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))
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]
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())
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")
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)
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()
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
pytestpara funções e modelos. - Use linters (
flake8,black) e hooks pre-commit. - Documente API e comandos no
README.md. - Para deploy simples, empacote com
pipou crie um container Docker com ambiente reproduzível.
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.
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 Curso de Python.

