How to Build a Contact Book Program in Python
Contact Book:
Build a program that manages contacts with features like adding, editing, and deleting contacts.
Input values:
User interacts with the contact book by adding, editing, and deleting contacts.
Output value:
Visual representation of the contact book with the list of contacts, along with feedback on user actions (addition, editing, deletion).
Example:
Input values: 1. Add a new contact - User enters contact details: Name: Alinafe Lilith, Email: [email protected], Phone: 123-456-7890 Output value: Contact book updates to display the newly added contact "Alinafe Lilith" with the specified details. Input values: 2. Edit an existing contact - User selects the contact "Alinafe Lilith" to edit and updates the email to "[email protected]" Output value: The contact book is updated to display the edited contact "Alinafe Lilith" with the updated email. Input values: 3. Delete a contact - User selects the contact "Alinafe Lilithe" to delete. Output value: Contact book updates to remove "Alinafe Lilith" from the list. Input values: 4. View the contact details - User selects a contact to view details. Output value: Contact book displays the details of the selected contact, including name, email, and phone number.
Here are two different solutions for implementing a contact book program. One solution uses the dictionary data structure, and the other leverages a class structure to manage the contacts.
Solution 1: Using Dictionary for Contact Management
Code:
# Define a dictionary to store contacts
contacts = {}
# Function to add a new contact
def add_contact(name, email, phone):
contacts[name] = {'email': email, 'phone': phone}
print(f"Added contact: {name}")
# Function to edit an existing contact
def edit_contact(name, email=None, phone=None):
if name in contacts:
if email:
contacts[name]['email'] = email
if phone:
contacts[name]['phone'] = phone
print(f"Updated contact: {name}")
else:
print("Contact not found.")
# Function to delete a contact
def delete_contact(name):
if name in contacts:
del contacts[name]
print(f"Deleted contact: {name}")
else:
print("Contact not found.")
# Function to view contact details
def view_contact(name):
if name in contacts:
contact = contacts[name]
print(f"Name: {name}, Email: {contact['email']}, Phone: {contact['phone']}")
else:
print("Contact not found.")
# Example Usage
add_contact("Cliff Lolita", "[email protected]", "123-456-7890")
edit_contact("Cliff Lolita", email="[email protected]")
view_contact("Cliff Lolita")
delete_contact("Cliff Lolita")
Output:
Added contact: Cliff Lolita Updated contact: Cliff Lolita Name: Cliff Lolita, Email: [email protected], Phone: 123-456-7890 Deleted contact: Cliff Lolita
Explanation:
- First create an empty contacts dictionary to store contact information.
- The add_contact function adds a contact with the provided details.
- The edit_contact function updates existing contact details if the contact exists.
- The delete_contact function removes a contact if it is found in the dictionary.
- The view_contact function displays the contact details if the contact exists.
Solution 2: Using Classes for Contact Management
Code:
# Define a Contact class to manage individual contact details
class Contact:
def __init__(self, name, email, phone):
self.name = name
self.email = email
self.phone = phone
def update(self, email=None, phone=None):
if email:
self.email = email
if phone:
self.phone = phone
print(f"Updated contact: {self.name}")
def display(self):
print(f"Name: {self.name}, Email: {self.email}, Phone: {self.phone}")
# Define a ContactBook class to manage the list of contacts
class ContactBook:
def __init__(self):
self.contacts = {}
def add_contact(self, name, email, phone):
if name in self.contacts:
print("Contact already exists.")
else:
self.contacts[name] = Contact(name, email, phone)
print(f"Added contact: {name}")
def edit_contact(self, name, email=None, phone=None):
if name in self.contacts:
self.contacts[name].update(email, phone)
else:
print("Contact not found.")
def delete_contact(self, name):
if name in self.contacts:
del self.contacts[name]
print(f"Deleted contact: {name}")
else:
print("Contact not found.")
def view_contact(self, name):
if name in self.contacts:
self.contacts[name].display()
else:
print("Contact not found.")
# Example Usage
contact_book = ContactBook()
contact_book.add_contact("Polat Erik", "[email protected]", "123-456-7890")
contact_book.edit_contact("Polat Erik", email="[email protected]")
contact_book.view_contact("Polat Erik")
contact_book.delete_contact("Polat Erik")
Output:
Added contact: Polat Erik Updated contact: Polat Erik Name: Polat Erik, Email: [email protected], Phone: 123-456-7890 Deleted contact: Polat Erik
Explanation:
- A Contact class is defined to encapsulate contact details and provide methods for updating and displaying them.
- A ContactBook class manages multiple contacts using a dictionary and provides methods for adding, editing, deleting, and viewing contacts.
- The add_contact method in ContactBook checks for duplicate contacts before adding.
- Each Contact object is stored in the contacts dictionary, allowing efficient contact management.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/projects/python/python-contact-book-project.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics