Есть файл contacts.txt со следующим содержанием
Name Phone
John 123456
Jane 654321
Bob +1234
Указания:
1.При запуске должен загружаться список контактов из файла.
2.При создании, изменении или удалении контакта файл должен полностью перезаписываться новыми данными.
3.Чтение и запись данных в файл должны выполняться в отдельных функциях.
4.Необходимо сделать проверку на наличие в имени контакта запятой - запретите добавление контакта, если этот символ присутствует в имени.
5. Все изменения требуется вносить в законченную версию программы(код программы ниже)
6. Добавьте сортировку контактов по алфавиту перед выводом списка контактов. Используйте метод списка sort или функцию
sorted()
и лямбда-выражение для сортировки.
with open("contacts.txt", 'r') as file: #добавил функцию для открытия файла,
#но когда ищу контакт через find и ввожу имя Bob , пишет что такого контакта
#нет, почему?
print(file.read())
print("""Введите команду:
* list - вывести контакты
* find - найти контакт
* add - добавить контакт
* edit - изменить контакт
* delete - удалить контакт
* exit - выход""")
def list(contacts):
print("{:<10}".format('Name'), f"{'Phone':>10}")
for contact in contacts:
print("{:<10}".format(contact['name']), "{:>10}".format(contact['phone']))
def find(contacts):
print("Найти контакт:")
name = input("> ")
for contact in contacts:
if contact['name'] == name:
print(f"{contact['name']:<10}", "{:>10}".format(contact['phone']))
break
else:
print("Контакт не найден")
def delete(contacts):
print("Введите контакт: ")
name = input('> ')
for contact in contacts:
if contact['name'] == name:
print("Удалить контакт %s (YES/NO)?: " % name)
name_del = input('> ')
if name_del == "YES":
contacts.remove(contact)
print("Вы удалили контакт %s " % name)
def add(contacts):
print("Введите имя контакта:")
name = input("> ")
print("Введите телефон контакта:")
phone = input("> ")
new_contact = {'name': name, 'phone': phone}
contacts.append(new_contact)
print("Контакт добавлен и сохранён")
def edit(contacts):
print("Введите имя контакта: ")
name = input("> ")
for index, contact in enumerate(contacts):
if contact['name'] == name:
print("Введите новое имя контакта: ")
new_name = input("> ")
print("Введите новый телефон контакта: ")
new_phone = input("> ")
contact_update = {
'name': new_name,
'phone': new_phone
}
contacts[index] = contact_update
index = -1
break
if index == -1:
print("Контакт изменен")
else:
print("Контакт не найден")
while True:
print("\nВведите команду: ")
command = input('> ')
if command == 'list':
list(contacts)
elif command == 'find':
find(contacts)
elif command == 'add':
add(contacts)
elif command == 'edit':
edit(contacts)
elif command == 'delete':
delete(contacts)
elif command == 'exit':
break
else:
print("Такой команды нет")