最近读完了《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写的,不知道为什么不能写中文注释,有哪位知道原因能不能给说明下,先谢谢了。