python 三级菜单
程序员文章站
2022-07-14 22:58:31
...
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
自己想的,菜鸟版的
#!/usr/bin/env python
# -*- coding: utf-8 -*-
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车站':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}
while True:
for i in menu:
print(i)
choice = input("input:")
if choice in menu:
while True:
for i2 in menu[choice]:
print(i2)
choice2 = input("input2:")
if choice2 in menu[choice]:
while True:
for i3 in menu[choice][choice2]:
print(i3)
choice3 = input("input3:")
if choice3 in menu[choice][choice2]:
for i4 in menu[choice][choice2][choice3]:
print(i4)
choice4 = input("请输入b返回上一级,或者输入q退出程序:")
if choice4 == "b":
pass
elif choice4 == "q":
exit()
if choice3 == "b":
break
elif choice3 == "q":
exit()
if choice2 == "b":
break
elif choice2 == "q":
exit()
if choice == "q" :
exit()
只用一个while的,优化版本
借鉴的别人的代码学习一哈
https://blog.csdn.net/sinat_38163598/article/details/77793478
current_layer=menu #实现动态循环
parent_layer=[] #保存所有父级,最后一个元素永远是父亲级
while True:
for key in current_layer:
print(key)
choice=input(">>>:").strip()
if len(choice)==0:continue
if choice in current_layer:
# parent_layer=current_layer
parent_layer.append(current_layer)#把当前级加入父亲级称为列表最后一个元素
#下一次循环,当输入return,就可以直接取列表最后一个值
current_layer=current_layer[choice]
elif choice=="b":
# current_layer=parent_layer
current_layer=parent_layer.pop()#取出列表最后一个值,因为他就是当前层的父亲级
elif choice=="q":
break
else:
print("no item")
自己优化借鉴写的易于理解的代码
current_layer = menu
layers = []
while True :
for k in current_layer :
print(k)
choice = input (">:").strip()
if not choice : continue
if choice in current_layer :
layers.append(current_layer)
current_layer = current_layer[choice]
elif choice == 'b' :
if len(layers) != 0:
current_layer = layers.pop()
else :
print ("已回到最顶层")
上一篇: JS金额“分”转换成“元”,金额上万时,以万为单位
下一篇: python 三级菜单