python3 练习题(多级菜单)

时间:2023-03-09 00:36:52
python3 练习题(多级菜单)
'''
多级菜单
需求:
1.现有省/市/县3级结构,要求程序启动后,允许用户可依次选择进入各子菜单
2.可在任意一级菜单返回上一级
3.可以在任意一级菜单退出程序
所需新知识点: 列表/字典
'''
menu = {
"山东": {
"济南": {
"平阴": {},
"商河": {},
"莱芜": {}
},
"济宁": {
"金乡": {},
"微山": {},
"嘉祥": {}
},
"曲阜": {
"南辛": {},
"陵城": {},
"防山": {}
}
},
"北京": {
"海淀": {
"万寿路": {},
"永定路": {},
"中关村": {}
},
"昌平": {
"回龙观": {},
"南口": {},
"沙河": {}
},
"朝阳": {
"呼家楼": {},
"三里屯": {},
"双井": {}
}
},
"上海": {
"黄浦": {
"南京东路": {},
"外滩": {},
"瑞金二路": {}
},
"徐汇": {
"湖南路": {},
"天平路": {},
"枫林路": {} },
"长宁": {
"华阳路": {},
"新华路": {},
"江苏路": {}
}
},
} current_menu = menu
layers = []
while True:
for i in current_menu:
print(i)
choice = input(">: ").strip()
if choice in current_menu:
layers.append(current_menu)
current_menu = current_menu[choice]
elif choice.upper() == "B":
if len(layers) == 0:
print("已经到顶了")
continue
current_menu = layers.pop() ----------------------------------------------微调1------------------------------------ current_menu = menu
choices = []
while True:
for i in current_menu:
print(i)
choice = input(">: ").strip()
if choice in current_menu:
choices.append(choice)
current_menu = current_menu[choice]
elif choice.upper() == "B":
current_menu = menu
if len(choices) == 0:
print("已经到顶了")
continue
choices.pop()
for i in choices:
current_menu = current_menu[i]
'''
比上面的代码多了最后两行,请大佬留言,哪个方式更好一些.
''' ------------------------------------------微调2--------------------------------------- current_menu = menu
choices = []
while True:
for i in current_menu:
print(i)
print("q退出 b返回上一级")
if len(choices) >= 1:
choice = input("%s>: " % '>'.join(choices)).strip()
else:
choice = input(">: ").strip()
if choice in current_menu:
choices.append(choice)
current_menu = current_menu[choice]
elif choice.upper() == "B":
current_menu = menu
if len(choices) == 0:
print("已经到顶了")
continue
choices.pop()
for j in choices:
current_menu = current_menu[j]
elif choice.upper() == "B":
break