第10天,python之路

三级菜单

  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()

 

转载于:https://www.cnblogs.com/haccer/articles/9739706.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值