三级菜单高大上版本

# _*_coding:utf-8_*_
# 作者:王佃元
# 日期:2019/12/15
'''
三级菜单新增功能需求
1.需将地区内容保存至文件中
2.用户可对地区内容进行增删改
'''
menu = {
'上海':{
'闵行区':{
'老闵行':{
'紫竹科技园':{},
'上海交大':{},
},
'新闵行':{
'浦江镇':{},
'漕河泾':{},
},
},
'黄浦区':{
'外滩':{
'东方明珠':{},
'南京步行街':{},
'豫园':{},
},
'建筑':{
'人民广场':{},
'大剧院':{},
},
},
},
'深圳':{
'福田区':{
'华强北':{
'华强电子城':{},
'赛格电子城':{},
},
'步行街':{
'东门步行街':{},
'荔枝公园':{},
},
},
'南山区':{
'科技园':{
'南山科技园':{},
'西丽科技园':{},
},
'手机园':{
'酷派科技园':{},
'oppo科技园':{},
},
},
},
}
with open('three_level_menu', 'r', encoding='utf8') as menu_read:
zone = eval(menu_read.read().strip())
msg = '''*******请输入地区*******
输入b返回上一层
输入q退出
***********************'''
current_layer = zone
parent_layers = []
user_enter_quit = False
while not user_enter_quit:
print(msg)
for key in current_layer:
print(key)
user_enter = input("please input :")
if user_enter in current_layer:
parent_layers.append(current_layer) #每一次的当前层对应字典追加至列表中
current_layer = current_layer[user_enter] #将下一层字典赋给当前层
elif user_enter.lower() == 'b' and parent_layers != []:
current_layer = parent_layers.pop() #默认删除列表中最后一个元素,并返回该元素值。使用pop不会增加列表长度
elif user_enter.lower() == 'q':
current_layer = parent_layers.pop(0)
user_enter_quit = True
elif user_enter not in current_layer: #如果用户输入内容不在字典中,则将用户输入作为key添加至一个新字典
if user_enter == 'mod':
original_zone = input('请输入修改的地区:')
mod_zone = input('请输入要修改内容:')
current_layer[mod_zone] = current_layer[original_zone]
current_layer.pop(original_zone)
elif user_enter == 'rem':
rem_enter = input('请输入要删除的地区:')
current_layer.pop(rem_enter)
elif len(parent_layers) < 3:
add_enter = input('对不起,无此地区,请重新输入添加地区:')
current_layer[add_enter] = {} #用户输入内容写入字典后,则进入下一层,提示用户继续输入下一个地点
# print(current_layer[user_enter])
else:
print('最后一层')
else:
print('please enter again!')
with open('three_level_menu', 'w', encoding='utf8') as menu_write:
menu_write.write(str(current_layer).strip())

猜你喜欢

转载自www.cnblogs.com/python-beginner/p/12065398.html