Você sabe criar um CRUD em Python? Faça seu primeiro sistema do zero
Aprenda como criar um CRUD em Python do zero com um projeto simples de cadastro de contatos no terminal, praticando listas, dicionários, funções e lógica.
Introdução
Você sabe criar um CRUD em Python? Se ainda não sabe, esse é um dos melhores projetos para começar a entender como sistemas reais funcionam.
CRUD é uma sigla muito usada na programação. Ela representa quatro operações básicas: criar, listar, atualizar e deletar informações. Essas ações aparecem em praticamente qualquer sistema: cadastro de usuários, lista de produtos, agenda de contatos, painel administrativo, sistema de tarefas, controle financeiro e muitos outros projetos.
Neste artigo, você vai aprender como criar um CRUD em Python para iniciantes, usando um projeto simples de cadastro de contatos no terminal. A ideia é construir um sistema pequeno, mas com lógica real de programação.
Esse projeto é ótimo para quem está começando porque trabalha conceitos importantes como listas, dicionários, funções, condicionais, laço de repetição, input, print e organização de código. Tudo isso sem precisar instalar banco de dados, framework ou biblioteca externa.
===== CRUD DE CONTATOS =====
1. Cadastrar contato
2. Listar contatos
3. Atualizar contato
4. Remover contato
5. Sair
Escolha uma opção:O que é um CRUD?
CRUD significa:
Create -> Criar
Read -> Ler ou listar
Update -> Atualizar
Delete -> DeletarEm português, podemos entender assim: Create é quando o sistema cadastra uma nova informação. Read é quando o sistema mostra informações já cadastradas. Update é quando o sistema altera uma informação existente. Delete é quando o sistema remove uma informação.
Por exemplo, em um cadastro de contatos, criar é cadastrar um novo contato, ler é listar os contatos salvos, atualizar é mudar nome, telefone ou e-mail, e deletar é remover um contato da lista.
Mesmo sendo simples, esse conceito aparece em sistemas profissionais. Por isso, aprender CRUD é um passo importante para quem quer evoluir em Python, back-end, banco de dados, APIs e desenvolvimento de sistemas.
O que vamos criar neste projeto?
Vamos criar um sistema simples de cadastro de contatos em Python.
Cada contato terá três informações:
Nome
Telefone
E-mailO sistema terá um menu com cinco opções:
1. Cadastrar contato
2. Listar contatos
3. Atualizar contato
4. Remover contato
5. SairO projeto será feito no terminal. Isso é bom para iniciantes porque ajuda a focar na lógica, sem se preocupar com interface gráfica, CSS ou banco de dados.
Arquivo do projeto
Crie uma pasta chamada crud-contatos-python. Dentro dela, crie um arquivo chamado app.py.
crud-contatos-python/
└── app.pyEsse será o único arquivo do projeto. Se você estiver usando o VS Code, abra essa pasta no editor e crie o arquivo app.py.
Criando a lista de contatos
No começo do arquivo app.py, vamos criar uma lista vazia chamada contatos. Essa lista será responsável por guardar todos os contatos cadastrados.
contatos = []Em um sistema profissional, os dados normalmente ficariam em um banco de dados. Mas, para um projeto inicial, usar uma lista é perfeito para entender como a lógica funciona.
Cada contato será guardado como um dicionário Python.
{
"nome": "Ana",
"telefone": "21999999999",
"email": "ana@email.com"
}Criando a função para cadastrar contato
Agora vamos criar a primeira função do CRUD: a função de cadastro. Ela vai pedir nome, telefone e e-mail para o usuário e salvar tudo dentro da lista contatos.
def cadastrar_contato():
nome = input("Digite o nome do contato: ")
telefone = input("Digite o telefone do contato: ")
email = input("Digite o e-mail do contato: ")
contato = {
"nome": nome,
"telefone": telefone,
"email": email
}
contatos.append(contato)
print("\nContato cadastrado com sucesso!\n")Essa função usa input() para receber dados do usuário, cria um dicionário com as informações do contato e usa append() para adicionar esse contato dentro da lista. Esse é o primeiro passo do CRUD: Create, ou seja, criar um novo registro.
Criando a função para listar contatos
Agora vamos criar a função responsável por mostrar os contatos cadastrados.
def listar_contatos():
if len(contatos) == 0:
print("\nNenhum contato cadastrado.\n")
return
print("\nLista de contatos:")
for indice, contato in enumerate(contatos):
print(f"{indice + 1}. Nome: {contato['nome']}")
print(f" Telefone: {contato['telefone']}")
print(f" E-mail: {contato['email']}\n")Aqui usamos if para verificar se a lista está vazia. Se não houver contatos, o sistema mostra uma mensagem e encerra a função com return. Se houver contatos, usamos for junto com enumerate() para listar cada item com uma numeração.
Criando a função para atualizar contato
Agora vamos criar a parte de atualização. A função vai listar os contatos, pedir qual contato o usuário quer alterar e depois solicitar os novos dados.
def atualizar_contato():
listar_contatos()
if len(contatos) == 0:
return
try:
indice = int(input("Digite o número do contato que deseja atualizar: ")) - 1
if indice < 0 or indice >= len(contatos):
print("\nContato não encontrado.\n")
return
novo_nome = input("Digite o novo nome: ")
novo_telefone = input("Digite o novo telefone: ")
novo_email = input("Digite o novo e-mail: ")
contatos[indice]["nome"] = novo_nome
contatos[indice]["telefone"] = novo_telefone
contatos[indice]["email"] = novo_email
print("\nContato atualizado com sucesso!\n")
except ValueError:
print("\nDigite um número válido.\n")Aqui usamos try e except para evitar que o programa quebre se o usuário digitar uma letra no lugar de um número. Também verificamos se o índice informado existe dentro da lista. Essa parte representa o Update do CRUD.
Criando a função para remover contato
Agora falta criar a função para deletar um contato.
def remover_contato():
listar_contatos()
if len(contatos) == 0:
return
try:
indice = int(input("Digite o número do contato que deseja remover: ")) - 1
if indice < 0 or indice >= len(contatos):
print("\nContato não encontrado.\n")
return
contato_removido = contatos.pop(indice)
print(f"\nContato {contato_removido['nome']} removido com sucesso!\n")
except ValueError:
print("\nDigite um número válido.\n")Nessa função, usamos pop() para remover o contato da lista. Antes de remover, o sistema verifica se a lista tem contatos e se o número digitado é válido. Essa é a parte Delete do CRUD.
Criando o menu principal
Agora que já temos as funções principais, precisamos criar um menu para o usuário escolher o que deseja fazer.
def mostrar_menu():
print("===== CRUD DE CONTATOS =====")
print("1. Cadastrar contato")
print("2. Listar contatos")
print("3. Atualizar contato")
print("4. Remover contato")
print("5. Sair")Essa função apenas mostra as opções na tela. Agora vamos criar a função principal que mantém o sistema rodando.
def iniciar_sistema():
while True:
mostrar_menu()
opcao = input("Escolha uma opção: ")
if opcao == "1":
cadastrar_contato()
elif opcao == "2":
listar_contatos()
elif opcao == "3":
atualizar_contato()
elif opcao == "4":
remover_contato()
elif opcao == "5":
print("\nSistema encerrado.")
break
else:
print("\nOpção inválida. Tente novamente.\n")Aqui usamos while True para manter o sistema funcionando até o usuário escolher a opção de sair. Quando o usuário digita 5, o comando break encerra o laço e finaliza o programa.
Código completo do CRUD em Python
Agora veja o código completo do projeto. Copie tudo para dentro do arquivo app.py.
contatos = []
def cadastrar_contato():
nome = input("Digite o nome do contato: ")
telefone = input("Digite o telefone do contato: ")
email = input("Digite o e-mail do contato: ")
contato = {
"nome": nome,
"telefone": telefone,
"email": email
}
contatos.append(contato)
print("\nContato cadastrado com sucesso!\n")
def listar_contatos():
if len(contatos) == 0:
print("\nNenhum contato cadastrado.\n")
return
print("\nLista de contatos:")
for indice, contato in enumerate(contatos):
print(f"{indice + 1}. Nome: {contato['nome']}")
print(f" Telefone: {contato['telefone']}")
print(f" E-mail: {contato['email']}\n")
def atualizar_contato():
listar_contatos()
if len(contatos) == 0:
return
try:
indice = int(input("Digite o número do contato que deseja atualizar: ")) - 1
if indice < 0 or indice >= len(contatos):
print("\nContato não encontrado.\n")
return
novo_nome = input("Digite o novo nome: ")
novo_telefone = input("Digite o novo telefone: ")
novo_email = input("Digite o novo e-mail: ")
contatos[indice]["nome"] = novo_nome
contatos[indice]["telefone"] = novo_telefone
contatos[indice]["email"] = novo_email
print("\nContato atualizado com sucesso!\n")
except ValueError:
print("\nDigite um número válido.\n")
def remover_contato():
listar_contatos()
if len(contatos) == 0:
return
try:
indice = int(input("Digite o número do contato que deseja remover: ")) - 1
if indice < 0 or indice >= len(contatos):
print("\nContato não encontrado.\n")
return
contato_removido = contatos.pop(indice)
print(f"\nContato {contato_removido['nome']} removido com sucesso!\n")
except ValueError:
print("\nDigite um número válido.\n")
def mostrar_menu():
print("===== CRUD DE CONTATOS =====")
print("1. Cadastrar contato")
print("2. Listar contatos")
print("3. Atualizar contato")
print("4. Remover contato")
print("5. Sair")
def iniciar_sistema():
while True:
mostrar_menu()
opcao = input("Escolha uma opção: ")
if opcao == "1":
cadastrar_contato()
elif opcao == "2":
listar_contatos()
elif opcao == "3":
atualizar_contato()
elif opcao == "4":
remover_contato()
elif opcao == "5":
print("\nSistema encerrado.")
break
else:
print("\nOpção inválida. Tente novamente.\n")
iniciar_sistema()Esse código já cria um CRUD completo no terminal. Ele permite cadastrar contatos, listar contatos, atualizar contatos e remover contatos.
Como executar o projeto
Para rodar o projeto, abra o terminal dentro da pasta do arquivo e execute:
python app.pyDependendo da instalação do seu computador, pode ser necessário usar:
python3 app.pyQuando o programa iniciar, o menu será exibido no terminal. Agora é só testar cada opção.
===== CRUD DE CONTATOS =====
1. Cadastrar contato
2. Listar contatos
3. Atualizar contato
4. Remover contato
5. Sair
Escolha uma opção: 1
Digite o nome do contato: Ana
Digite o telefone do contato: 21999999999
Digite o e-mail do contato: ana@email.com
Contato cadastrado com sucesso!
===== CRUD DE CONTATOS =====
Escolha uma opção: 2
Lista de contatos:
1. Nome: Ana
Telefone: 21999999999
E-mail: ana@email.comO que esse projeto ensina?
Esse projeto ensina muito mais do que parece. Com ele, você pratica listas em Python, porque os contatos ficam guardados dentro de uma lista. Também pratica dicionários em Python, porque cada contato é um conjunto de informações com nome, telefone e e-mail.
Além disso, você usa funções, que ajudam a organizar o código em partes menores. Em vez de deixar tudo misturado, cada função tem uma responsabilidade.
Você também pratica condicionais, usando if, elif e else para decidir o que o sistema deve fazer. Outro ponto importante é o uso do while, que mantém o sistema rodando até o usuário escolher sair.
Por que esse CRUD é bom para iniciantes?
O CRUD é um excelente projeto para iniciantes porque mostra a lógica de sistemas reais. Quase todo sistema precisa cadastrar, listar, editar e remover dados.
Isso aparece em lojas virtuais, aplicativos, painéis administrativos, sistemas escolares, sistemas financeiros e plataformas web. Quando você entende CRUD, começa a entender como uma aplicação funciona por trás.
Esse projeto também é bom porque não depende de interface gráfica nem banco de dados. Você consegue focar na lógica primeiro. Depois, quando estiver mais confiante, pode melhorar o projeto adicionando novos recursos.
Melhorias para evoluir o projeto
Depois de fazer o CRUD básico, você pode melhorar o sistema.
- Salvar os contatos em um arquivo .txt.
- Salvar os contatos em JSON.
- Buscar contato pelo nome.
- Validar e-mail e telefone.
- Impedir cadastro vazio.
- Criar ID para cada contato.
- Organizar o código em mais arquivos.
- Conectar o projeto a um banco de dados.
Uma melhoria interessante seria salvar os contatos em um arquivo JSON. Assim, quando o programa fechar, os dados não seriam perdidos. Outra evolução seria transformar esse CRUD em uma API usando Python com Flask ou FastAPI.
Como colocar esse projeto no portfólio
Mesmo sendo simples, esse projeto pode entrar no seu portfólio como um projeto de aprendizado.
CRUD de contatos desenvolvido em Python no terminal.
O projeto permite cadastrar, listar, atualizar e remover contatos.
Foi criado para praticar listas, dicionários, funções, condicionais, laços de repetição e lógica de programação.Também é interessante colocar no GitHub com um arquivo README.md explicando o que o projeto faz, quais tecnologias foram usadas, como executar, quais funções existem e quais melhorias podem ser feitas.
Erros comuns ao criar um CRUD em Python
Um erro comum é esquecer de chamar a função principal no final do arquivo. Sem esta linha, o sistema não inicia:
iniciar_sistema()Outro erro comum é confundir índice da lista com número exibido para o usuário. No código, o primeiro item da lista tem índice 0. Mas, para o usuário, mostramos como item 1. Por isso usamos:
indice = int(input("Digite o número do contato que deseja atualizar: ")) - 1Também é comum esquecer de tratar erro quando o usuário digita uma letra em vez de número. Por isso usamos try e except ValueError. Esses detalhes parecem pequenos, mas ajudam a deixar o sistema mais confiável.
Conclusão
Criar um CRUD em Python é um ótimo passo para quem está começando na programação.
Neste projeto, você criou um sistema simples de cadastro de contatos no terminal, com opções para cadastrar, listar, atualizar e remover informações.
Mesmo sem banco de dados ou interface gráfica, esse projeto ensina conceitos importantes como listas, dicionários, funções, condicionais, repetição, entrada de dados e organização de código.
Se você está aprendendo Python, esse tipo de projeto é muito melhor do que apenas assistir aulas. Ele obriga você a pensar, testar, errar e corrigir.
Agora que você criou seu primeiro CRUD, o próximo passo é melhorar o projeto aos poucos. Você pode salvar os dados em arquivo, adicionar busca por nome ou transformar esse sistema em uma API.
