Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Richard python lab 17 #345

Merged
merged 2 commits into from
Mar 12, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 133 additions & 0 deletions Code/Richard/python/lab_17.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
import json

class ContactList:

def __init__(self):
self.contacts = []
#self.phone_number = phone_number
#self.email = email

def load(self):
# 1) open 'contacts.json' with option 'r' for read
with open ('contacts.json', 'r') as f:
# 2) get the text from the file
contacts = f.read()

# 3) convert the text into a python dictionary (json.loads)
contacts = json.loads(contacts) # convert a string containing json to a dictionary
# 4) get the list of contacts out of the dictionary
contacts=contacts['contacts']

# 5) assign the list of dictionaries to self.contacts
self.contacts = contacts
...

def count(self):
return len(self.contacts)

# return the length of self.contacts
#print(contacts)

...

def save(self):
# 1) open 'contacts.json' with open 'w' for write
with open ('contacts.json', 'w') as f:
# contacts = f.read()

# 2) put self.contacts in a dictionary with the key 'contacts'
dictionary = {"contacts":self.contacts}

# 3) convert the dictionary to a json string (json.dumps)

contacts = json.dumps(dictionary, indent=2)
# 4) write the json string to the file

# with open ('C:/Users/Richard Watkins/pdx_code/class_raven/Code/Richard/python/contacts.json', 'w') as f:
f.write(contacts)
...

def print(self):
# loop over self.contacts
for contact in self.contacts:
print(contact)
#print('here', self.contacts)
# print the information for each contact on a separate line
...

def add(self, name, phone_number, email):
# create a new dictionary using the 3 parameters
new_dict={}
new_dict['name']=name
new_dict['phone_number']=phone_number
new_dict['email']=email
# add the new dictionary to self.contacts
self.contacts.append(new_dict)

...

def remove(self, name):
# find the contact in self-contacts with the given name
for contact in self.contacts:
if name == contact['name']:
self.contacts.pop(self.contacts.index(contact))

# remove the element at that index

...

def update(self, old_name, new_name, new_phone_number, new_email):
# find the contact in self.contacts with the given old_name
for contact in self.contacts:
if old_name == contact['name']:
print(contact)
# set that contacts' name, phone number, etc to the given values

contact['name']=new_name
contact['phone_number']=new_phone_number
contact['email']=new_email

...

contact_list = ContactList() # create an instance of our class
contact_list.load()
print('Welcome to the Contact List App (CLA)')
while True:
command = input('Enter a command: ')
if command == 'load':
contact_list.load()
print(f'Loaded {contact_list.count()} contacts.')
elif command == 'save':
contact_list.save()
print(f'Saved {contact_list.count()} contacts.')
elif command == 'print':
contact_list.print()
elif command == 'add':
print('Enter info of contact to add:')
name = input('Name: ')
phone_number = input('Phone Number: ')
email = input('Email: ')
contact_list.add(name, phone_number, email)
elif command == 'remove':
name = input('Name of contact to remove: ')
contact_list.remove(name)
elif command == 'update':
print('Enter info of contact to add:')
old_name = input('Name of contact to update: ')
new_name = input('New Name: ')
new_phone_number = input('New Phone Number: ')
new_email = input('New Email: ')
contact_list.update(old_name, new_name, new_phone_number, new_email)
elif command == 'help':
print('Available commands:')
print('load - load all contacts from the file')
print('save - save contacts to a file')
print('print - print all contacts')
print('add - add a new contact')
print('remove - remove a contact')
print('update - update a contact')
print('exit - exit the program')
elif command == 'exit':
break
else:
print('Command not recognized')