【python】——ウィジェットの電話帳
14880 ワード
pythonを初めて勉強して、小さなプログラムを書いて練習します.主な機能は、削除・変更のいくつかの機能です.主に使用される技術:辞書の使用、pickleの使用、ioファイルの操作.コードは次のとおりです.
間違いがあったり、もっと良い考えがあったりしたら、教えてください.
1 import pickle
2
3 #studentinfo = {'netboy': '15011038018',\
4 # 'godboy': '15011235698'}
5 studentinfo = {}
6
7 FUNC_NUM = 5
8
9 def write_file(value):
10 file = open('student_info.txt', 'wb')
11 file.truncate()
12 pickle.dump(value, file, True)
13 file.close
14
15 def read_file():
16 global studentinfo
17 file = open('student_info.txt', 'rb')
18 studentinfo = pickle.load(file)
19 file.close()
20
21 def search_student():
22 global studentinfo
23 name = input('please input student\'s name:')
24 if name in studentinfo:
25 print('name:%s phone:%s' % (name, studentinfo[name]))
26 else:
27 print('has no this body')
28
29 def delete_student():
30 global studentinfo
31 name = input('please input student\'s name:')
32 if name in studentinfo:
33 studentinfo.pop(name)
34 write_file(studentinfo)
35 else:
36 print('has no this body')
37
38 def add_student():
39 global studentinfo
40 name = input('please input student\'s name:')
41 phone = input('please input phone:')
42 studentinfo[name] = phone
43 write_file(studentinfo)
44
45 def modifiy_student():
46 global studentinfo
47 name = input('please input student\'s name:')
48 if name in studentinfo:
49 phone = input('please input student\'s phone:')
50 studentinfo[name] = phone
51 else:
52 print('has no this name')
53
54 def show_all():
55 global studentinfo
56 for key, value in studentinfo.items():
57 print('name:' + key + 'phone:' + value)
58
59 func = {1 : search_student, \
60 2 : delete_student, \
61 3 : add_student, \
62 4 : modifiy_student, \
63 5 : show_all}
64
65 def menu():
66 print('-----------------------------------------------');
67 print('1 search student:')
68 print('2 delete student:')
69 print('3 add student:')
70 print('4 modifiy student:')
71 print('5 show all student')
72 print('6 exit')
73 print('-----------------------------------------------');
74
75 def init_data():
76 global studentinfo
77 file = open('student_info.txt', 'rb')
78 studentinfo = pickle.load(file)
79 #print(studentinfo)
80 file.close()
81
82 init_data()
83 while True:
84 menu()
85 index = int(input())
86 if index == FUNC_NUM + 1:
87 exit()
88 elif index < 1 or index > FUNC_NUM + 1:
89 print('num is between 1-%d' % (FUNC_NUM + 1))
90 continue
91 #print(index)
92 func[index]()
間違いがあったり、もっと良い考えがあったりしたら、教えてください.