Задача «Адресная книга» от Swaroop-a (книга "Byte of Python"). Правильно ли я её решил?
Создайте собственную программу «Адресная книга», работающую из командной строки и позволяющую просматривать, добавлять, изменять, удалять или искать контактные данные ваших знакомых.Кроме того, эта информация также должна сохраняться на диске для последующего доступа"
Этот код работает. Но решение ли это данной задачи?
import pickle
import os
class Addrres:
def __init__(self, name, age):
self.name = name
self.age = age
# добавление
def add(self):
book = {}
book['name'] = self.name
book['age'] = self.age
data = 'D:\\Papka\\' + self.name + '.data'
f = open(data, 'wb')
pickle.dump(book, f)
f.close()
del book
# чтение
def reader(self):
data = 'D:\\Papka\\' + self.name + '.data'
f = open(data, 'rb')
stored = pickle.load(f)
print(stored)
# удаление
def deleter(self):
os.remove('D:\\Papka\\' + self.name + '.data')
# изменение
def changer(self):
os.remove('D:\\Papka\\' + self.name + '.data')
newname = input('New name: ')
newage = input('New age: ')
self.name = newname
self.age = newage
book = {}
book['name'] = self.name
book['age'] = self.age
data = 'D:\\Papka\\' + self.name + '.data'
f = open(data, 'wb')
pickle.dump(book, f)
f.close()
del book
o = input('What do we do: ')
'''
добавление - "0"
чтение - "1"
изменение - "2"
удаление - "3"
'''
if o == '0':
a = input('Age: ')
b = input('Name: ')
address = Addrres(b, a)
address.add()
elif o == '1':
a = input('Name: ')
address = Addrres(a, age=1)
address.reader()
elif o == '3':
a = input('Name: ')
address = Addrres(a, age=1)
address.deleter()
elif o == '2':
a = input('Name: ')
address = Addrres(a, age=1)
address.changer()
Ответы (1 шт):
Автор решения: Андрей Таков
→ Ссылка
Код работает, значит решение есть. Однако это только начало пути, в этой же книге было написано, что после создания кода идет его модернизация. В данный момент, ты можешь выполнять только одну операцию, затем требуется перезапуск программы, внедри цикл, чтобы не перезапускать программу, а работать сколько угодно до нажатия "выход".