三级菜单
1 #!/usr/bin/env python
2 #_*_coding:utf-8_*_
3 import json,os
4 menu = {
5 '北京':{
6 '海淀':{
7 '五道口':{
8 'soho':'www.soho.com',
9 '网易':'www.163.com',
10 'google':'www.google.com'
11 },
12 '中关村':{
13 '爱奇艺':'www.iqiyi.com',
14 '汽车之家':'www.autohome.com.cn',
15 'youku':'www.youku.com',
16 },
17 '上地':{
18 '百度':'www.baidu.com',
19 },
20 },
21 '昌平':{
22 '沙河':{
23 '老男孩':{},
24 '北航':{},
25 },
26 '天通苑':{},
27 '回龙观':{},
28 },
29 '朝阳':{},
30 '东城':{},
31 },
32 '上海':{
33 '闵行':{
34 "人民广场":{
35 '炸鸡店':{}
36 }
37 },
38 '闸北':{
39 '火车战':{
40 '携程':{}
41 }
42 },
43 '浦东':{},
44 },
45 '山东':{},
46 }
47
48 File = 'F:/三级菜单优化/info.txt'
49 Flag = 0
50 temp = {}
51
52 def json_file(dict:dict):
53 f = open(File,'w',encoding='utf-8')
54 json.dump(dict,f,ensure_ascii=False)
55 f.close()
56 f= open(File,'rb')
57 info = json.loads(f.read(),encoding='utf-8')
58 f.close()
59 return info
60 def showinfo(info):
61 '''信息显示'''
62 if type(info) is dict:
63 for i in info:
64 print(i)
65 print('1、增加 2、选择 3、删除 ')
66 else:
67 print('到底了,请返回!')
68 back(info)
69
70 def user_input():
71 '''用户输入'''
72 while True:
73 content= input('>>:').strip()
74 while not (content.isnumeric() or content == 'b'):
75 content = input('重新输入:').strip()
76 continue
77 else:
78 if content == 'b':
79 Flag = 'b'
80 break
81 else:
82 Flag = int(content)
83 break
84 return Flag
85
86 def add_info(info):
87 '''添加信息'''
88 info_temp = info
89 city = input('城市:').strip()
90 if city not in info.keys():
91 company= input('公司:').strip()
92 info[city] = company
93 info_update = info
94 with open(File,'w',encoding='utf-8')as f:
95 json.dump(info_update,f,ensure_ascii=False)
96 else:
97 print('%s已存在'%city)
98 f = open(File,'rb')
99 info_update = json.loads(f.read(),encoding='uft-8')
100 return info_update,info_temp
101
102 def sel_info(info):
103 '''选择'''
104 info_temp = info
105 selet = input('>>城市:').strip()
106 while (selet not in info):
107 selet = input('不存在城市:').strip()
108 continue
109 else:
110 info_n = info[selet]
111
112 return info_n, info_temp
113 def del_info(info):
114 '''删除数据'''
115 info_temp = info
116 content = input('删除:').strip()
117 while (content not in info):
118 content = input('删除不存在:').strip()
119 continue
120 else:
121 info.pop(content)
122 info_n = info
123 return info_n,info_temp
124
125 def back(info):
126 '''返回'''
127 for i in info:
128 print(i)
129 print('1、增加 2、选择 3、删除 ')
130
131 def run():
132 while True:
133 info = json_file(menu)
134 while True:
135 showinfo(info)
136 Flag = user_input()
137 if Flag == 1:
138 info, temp = add_info(info)
139 elif Flag == 2:
140 info, temp = sel_info(info)
141 elif Flag == 3:
142 info, temp = del_info(info)
143 elif Flag == 'b':
144 info = temp
145 back(temp)
146 break
147
148 if __name__ == '__main__':
149 run()