最近读完了《A Byte of Python》,按照书上提示写了一个命令行电话薄程序(与书上要求相比略有缩减)。
程序比较糙,希望看到的大神能够不吝赐教……
以下是源代码
1 #Filename: AddressBook.py
2
3 import pickle
4
5 class AddressBook:
6
7 filename = ''
8
9 def __init__(self, name, phone): #initialize class
10 self.name = name
11 self.phone = phone
12 self.personlist = {name : phone}
13 def add(self): #add item
14 name = input('Enter a name: ')
15 if name in self.personlist.keys():
16 print('The name is already existing!')
17 else:
18 phone = input('Enter a phone number: ')
19 self.personlist[name] = phone
20 print('Saved!')
21 def modify(self): #modify item
22 name = input('Enter a name: ')
23 if name not in self.personlist.keys():
24 print('Failure! The name not here: ')
25 else:
26 phone = input('Enter a new phone: ')
27 self.personlist[name] = phone
28 print('Modify successfully!')
29 def delete(self): #delete item
30 name = input('Enter a name: ')
31 if name not in self.personlist.keys():
32 print('The name is not here.')
33 else:
34 self.personlist.__delitem__(name)
35 print('Delete successfully!')
36 def search(self): #search item
37 name = input('Enter a name: ')
38 if name not in self.personlist.keys():
39 print('The name is not here.')
40 else:
41 print('Name: {0}, Phone: {1}' .format(name, self.personlist[name]))
42 def show(self): #show items
43 for name in self.personlist.keys():
44 print('Name: {0} Phone: {1}' .format(name, self.personlist[name]))
45 def dump(self): #dump data to disc
46 filename = self.name + '.data'
47 f = open(filename, 'wb')
48 pickle.dump(self.personlist, f)
49 f.close()
50 def load(self): #load data from disc
51 filename = self.name + '.data'
52 f = open(filename, 'rb')
53 self.personlist = pickle.load(f)
54 f.close()
55 if __name__ == '__main__':
56
57 command = ['add','modify','search','delete','quit' ,'show']
58 person = AddressBook('hahaha', 123456789)
59
60 ans = input("Do you want to load existing data from disc?(Y/N)")
61 if ans == 'Y':
62 person.load()
63
64 while True:
65 str = input('What are you going to do(add/modify/search/delete/show/quit)?')
66
67 if str in command:
68 if str == 'add':
69 person.add()
70 elif str == 'modify':
71 person.modify()
72 elif str == 'search':
73 person.search()
74 elif str == 'delete':
75 person.delete()
76 elif str == 'show':
77 person.show()
78 else:
79 answer = input("Your contacts list hasn't been saved,save it now?(Y/N)")
80 if answer == 'Y':
81 person.dump()
82 print('Dump successfully!')
83 else:
84 print ('Exit the System')
85 break
86 else:
87 print ('Please input the command!')
88
这个程序使用Wing IDE写的,不知道为什么不能写中文注释,有哪位知道原因能不能给说明下,先谢谢了。