老男孩python学习阶段性作业- 三级菜单
作业:三级菜单
数据结构:
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车站':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
提交代码:
#! /user/bin/env python
# -*- coding:utf-8 -*-
menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车站': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
}
while True:
for i in menu:
print(i)
flag_1 = 1
choice1 = input('请输入要查询的省/市名称,按q键退出>>:').strip()
while flag_1:
if choice1 in menu:
if len(menu[choice1]) == 0:
print('无下级!')
flag_1 = 0
else:
for j in menu[choice1]:
print(j)
flag_2 = 1
choice2 = input('请输入要查询的区/县名称,按b键返回上层,按q键退出>>:').strip()
while flag_2:
if choice2 in menu[choice1]:
if len(menu[choice1][choice2]) == 0:
print('无下级!')
else:
for k in menu[choice1][choice2]:
print(k)
choice3 = input('是否继续查询?按任意键继续,按b键返回上层,按q键退出>>:').strip()
if choice3.lower() == 'q':
print('再见!')
exit()
elif choice3.lower() == 'b':
flag_1 = 1
break
else:
flag_1 = 0
flag_2 = 0
elif choice2 == '':
print('输入值不可为空,请重新输入!')
break
elif choice2.lower() == 'b':
flag_1 = 0
break
elif choice2.lower() == 'q':
print('再见!')
exit()
else:
print('输入值有误,请重新输入!')
break
elif choice1 == '':
print('输入值不可为空,请重新输入!')
flag_1 = 0
elif choice1.lower() == 'q':
print('再见!')
exit()
else:
print('输入值有误,请重新输入!')
flag_1 = 0
参考代码:
#! /user/bin/env python
# -*- coding:utf-8 -*-
path = [{'北京': {
'海淀': {'五道口': {'soho': {}, '网易': {}, 'google': {}}, '中关村': {'爱奇艺': {}, '汽车之家': {}, 'youku': {}}, '上地': {'百度': {}}},
'昌平': {'沙河': {'老男孩': {}, '北航': {}}, '天通苑': {}, '回龙观': {}}, '朝阳': {}, '东城': {}},
'上海': {'闵行': {'人民广场': {'炸鸡店': {}}}, '闸北': {'火车站': {'携程': {}}}, '浦东': {}}, '山东': {}}]
while True:
dict_cur = path[-1]
print(path)
for i in dict_cur: print(i)
msg = input(">>>").strip()
if msg in dict_cur and len(dict_cur[msg]) > 0:
dict_cur = dict_cur[msg]
path.append(dict_cur)
elif msg in dict_cur:
print('所选项下级内容为空')
elif msg.upper() == "B" and len(path) > 1:
path.pop()
elif msg.upper() == "Q":
break
else:
print('非法输入')
print("再见")