Proposta para um Projeto de Programação
Agora que exploraste os fundamentos do Python, desde a sintaxe básica até às bibliotecas populares, é hora de consolidar os teus conhecimentos com um projeto prático. Este capítulo irá guiar-te na criação de um projeto de programação que integra os vários conceitos que aprendeste ao longo do livro.
Descrição do Projeto
Vamos desenvolver uma aplicação simples de gestão de contactos. Esta aplicação permitirá ao utilizador:
- Adicionar novos contactos
- Mostrar a lista de contactos existentes
- Atualizar contactos
- Remover contactos
A aplicação será baseada em consola e usará listas e dicionários para armazenar os dados. Vamos aplicar estruturas de decisão, ciclos, funções e manipulação de ficheiros para garantir que a nossa aplicação é funcional e fácil de utilizar.
Estrutura do Projeto
- Introdução à Gestão de Contactos
- Configuração Inicial
- Adicionar Contactos
- Mostrar Contactos
- Atualizar Contactos
- Remover Contactos
- Guardar e Carregar Contactos a partir de um Ficheiro
- Conclusão
Introdução à Gestão de Contactos
Antes de nos debruçarmos sobre o código, é importante planear o que queremos que a nossa aplicação faça. Aqui está um exemplo de como os dados serão armazenados:
contactos = [
{"nome": "João Silva", "telefone": "912345678", "email": "joao.silva@example.com"},
{"nome": "Maria Oliveira", "telefone": "987654321", "email": "maria.oliveira@example.com"}
]
Cada contacto será um dicionário com campos para o nome, telefone e email.
Configuração Inicial
Vamos começar por criar a estrutura básica da nossa aplicação. Abre o teu ambiente de desenvolvimento preferido e cria um novo ficheiro chamado gestao_contactos.py
.
def mostrar_menu():
print("Escolha uma opção:")
print("1. Adicionar Contacto")
print("2. Mostrar Contactos")
print("3. Atualizar Contacto")
print("4. Remover Contacto")
print("5. Guardar e Sair")
def main():
contactos = []
while True:
mostrar_menu()
escolha = input("Opção: ")
if escolha == '1':
adicionar_contacto(contactos)
elif escolha == '2':
mostrar_contactos(contactos)
elif escolha == '3':
atualizar_contacto(contactos)
elif escolha == '4':
remover_contacto(contactos)
elif escolha == '5':
guardar_contactos(contactos)
break
else:
print("Opção inválida, por favor tente novamente.")
if __name__ == "__main__":
main()
Adicionar Contactos
A função para adicionar um novo contacto irá pedir ao utilizador para inserir o nome, telefone e email, e depois adicionará este contacto à lista de contactos.
def adicionar_contacto(contactos):
nome = input("Nome: ")
telefone = input("Telefone: ")
email = input("Email: ")
novo_contacto = {"nome": nome, "telefone": telefone, "email": email}
contactos.append(novo_contacto)
print("Contacto adicionado com sucesso!")
Mostrar Contactos
Esta função irá passar por todos os contactos na lista e mostrá-los no ecrã.
def mostrar_contactos(contactos):
if not contactos:
print("Não existem contactos.")
return
for i, contacto in enumerate(contactos):
print(f"{i + 1}. Nome: {contacto['nome']}, Telefone: {contacto['telefone']}, Email: {contacto['email']}")
Atualizar Contactos
Para atualizar um contacto, vamos permitir ao utilizador escolher o contacto pelo índice e depois atualizar o nome, telefone e email.
def atualizar_contacto(contactos):
mostrar_contactos(contactos)
index = int(input("Número do contacto para atualizar: ")) - 1
if 0 <= index < len(contactos):
nome = input("Novo Nome: ")
telefone = input("Novo Telefone: ")
email = input("Novo Email: ")
contactos[index]["nome"] = nome
contactos[index]["telefone"] = telefone
contactos[index]["email"] = email
print("Contacto atualizado com sucesso!")
else:
print("Número de contacto inválido.")
Remover Contactos
Vamos criar uma função que remove um contacto da lista com base no índice fornecido pelo utilizador.
def remover_contacto(contactos):
mostrar_contactos(contactos)
index = int(input("Número do contacto para remover: ")) - 1
if 0 <= index < len(contactos):
contactos.pop(index)
print("Contacto removido com sucesso!")
else:
print("Número de contacto inválido.")
Guardar e Carregar Contactos a partir de um Ficheiro
Para guardar os contactos, vamos usar ficheiros em formato JSON. Isto permitirá que o utilizador guarde e carregue os contactos sempre que iniciar a aplicação.
import json
def guardar_contactos(contactos):
with open('contactos.json', 'w') as ficheiro:
json.dump(contactos, ficheiro)
print("Contactos guardados com sucesso!")
def carregar_contactos():
try:
with open('contactos.json', 'r') as ficheiro:
contactos = json.load(ficheiro)
return contactos
except FileNotFoundError:
return []
# Atualiza a função main para carregar contactos no início
def main():
contactos = carregar_contactos()
while True:
mostrar_menu()
escolha = input("Opção: ")
if escolha == '1':
adicionar_contacto(contactos)
elif escolha == '2':
mostrar_contactos(contactos)
elif escolha == '3':
atualizar_contacto(contactos)
elif escolha == '4':
remover_contacto(contactos)
elif escolha == '5':
guardar_contactos(contactos)
break
else:
print("Opção inválida, por favor tente novamente.")
Conclusão
Parabéns! Criaste uma aplicação funcional de gestão de contactos que permite adicionar, mostrar, atualizar, remover e guardar contactos. Este projeto consolidou vários conceitos fundamentais de Python, proporcionando uma experiência prática e útil. Continua a explorar e a expandir os teus conhecimentos, experimentando adicionar novas funcionalidades à aplicação.