Depois de aprender variáveis, condicionais e funções, a melhor forma de evoluir é construir. Estes 15 projetos Python para iniciantes foram organizados do mais simples ao mais completo para você praticar e criar um portfólio de verdade.
Não copie e publique sem entender. Escolha uma ideia, faça a primeira versão, altere regras e escreva um README explicando suas decisões. É isso que transforma exercício em portfólio.
Como escolher o projeto certo
- Começando agora: escolha os projetos 1 a 5 e foque em lógica.
- Já domina listas e funções: avance para arquivos, APIs e automação.
- Quer emprego: publique pelo menos um projeto com dados persistidos, testes e README.
15 ideias de projetos Python em ordem de dificuldade
- Calculadora de terminal: operações, validação e repetição.
- Jogo de adivinhação:
random, loops e pontuação. - Conversor de moedas: funções e, depois, uma API de cotação.
- Gerador de senhas: strings, segurança e opções do usuário.
- Quiz de perguntas: dicionários, pontuação e perguntas aleatórias.
- Lista de tarefas: CRUD em memória e depois em JSON.
- Controle de gastos: CSV, categorias e resumo mensal.
- Agenda de contatos: busca, edição e persistência em arquivo.
- Organizador de downloads:
pathlibe movimentação de arquivos. - Renomeador de imagens: automação segura com prévia das alterações.
- Monitor de preços: requisições HTTP, HTML e alertas éticos.
- Dashboard de dados: Pandas e gráficos com Matplotlib.
- API de tarefas: FastAPI, validação e documentação automática.
- Bot de relatórios: consolidação de planilhas e envio de e-mail.
- Aplicação de portfólio: API, banco de dados, testes e deploy.
Projeto 1: lista de tarefas com JSON
Este projeto é pequeno o bastante para terminar em uma tarde e ensina uma habilidade importante: persistir dados. Crie um arquivo tarefas.py:
import json
from pathlib import Path
ARQUIVO = Path("tarefas.json")
def carregar():
return json.loads(ARQUIVO.read_text()) if ARQUIVO.exists() else []
def salvar(tarefas):
ARQUIVO.write_text(json.dumps(tarefas, ensure_ascii=False, indent=2))
tarefas = carregar()
nova = input("Nova tarefa: ").strip()
if nova:
tarefas.append({"titulo": nova, "concluida": False})
salvar(tarefas)
for indice, tarefa in enumerate(tarefas, start=1):
print(f"{indice}. {tarefa['titulo']}")
Para evoluir, adicione comandos para concluir, editar e remover tarefas. Depois crie testes com pytest.
Projeto 2: organizador de arquivos
Automação é ótima para demonstrar valor real. Faça primeiro uma prévia no terminal; só depois use shutil.move.
from pathlib import Path
pasta = Path.home() / "Downloads"
extensoes = {".pdf": "PDFs", ".png": "Imagens", ".jpg": "Imagens"}
for arquivo in pasta.iterdir():
destino = extensoes.get(arquivo.suffix.lower())
if arquivo.is_file() and destino:
print(f"Mover: {arquivo.name} -> {destino}/")
Em seguida, confirme a ação com o usuário, crie as pastas e mova os arquivos. Consulte nosso guia de pathlib para tratar caminhos de forma portável.
Projeto 3: API de tarefas com FastAPI
Quando sua lista de tarefas funcionar no terminal, transforme-a em API. Esse salto mostra que você entende rotas, JSON e validação:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
tarefas = []
class Tarefa(BaseModel):
titulo: str
@app.post("/tarefas", status_code=201)
def criar_tarefa(tarefa: Tarefa):
item = {"id": len(tarefas) + 1, **tarefa.model_dump()}
tarefas.append(item)
return item
@app.get("/tarefas")
def listar_tarefas():
return tarefas
Para a versão de portfólio, use banco de dados, autenticação e testes. Nosso tutorial de FastAPI ajuda no próximo passo.
Como transformar uma ideia em projeto de portfólio
O recrutador não precisa de um projeto enorme; precisa entender o problema, sua solução e como executá-la. Todo repositório deve ter:
- um README com objetivo, instalação e exemplos;
- requirements.txt ou instruções do ambiente virtual;
- commits claros e nomes de arquivos compreensíveis;
- uma captura de tela, GIF ou exemplo de saída;
- uma seção de próximos passos com melhorias que você faria.
Plano de 30 dias
Na primeira semana, termine dois projetos de terminal. Na segunda, adicione JSON ou CSV. Na terceira, escolha um projeto de automação. Na quarta, publique o melhor no GitHub, escreva o README e peça para alguém testar as instruções.
Se você quer uma sequência guiada com exercícios e projetos, conheça o curso de Python da Academify. Para mais ideias, veja também nossos 5 projetos para portfólio.
Perguntas frequentes
Posso usar projetos de tutorial no meu portfólio?
Sim, desde que você explique o que mudou e acrescente funcionalidades próprias. Um projeto clonado sem adaptações não demonstra suas decisões técnicas.
Devo publicar código incompleto?
Prefira publicar uma versão pequena que funcione. Documente limitações e abra issues para as próximas melhorias.