码迷,mamicode.com
首页 > 其他好文 > 详细

三级菜单:动态变量、列表储存菜单记录

时间:2018-01-22 16:06:08      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:变化   存在   color   中关村   删除   append   菜单   bsp   赋值   

思路:

1. 整个程序中只有各级字典的键值在变化,所以可以引入一个动态变量

2. 利用一个空列表储存前面的输入菜单记录,输入“b”返回时调用这个列表的最后一条记录,并把该记录删除

 

menu = {
    北京:{
        海淀:{
            五道口:{
                soho:{},
                网易:{},
                google:{}
            },
            中关村:{
                爱奇艺:{},
                汽车之家:{},
                youku:{},
            },
            上地:{
                百度:{},
            },
        },
        昌平:{
            沙河:{
                老男孩:{},
                北航:{},
            },
            天通苑:{},
            回龙观:{},
        },
        朝阳:{},
        东城:{},
    },
    上海:{
        闵行:{
            "人民广场":{
                炸鸡店:{}
            }
        },
        闸北:{
            火车战:{
                携程:{}
            }
        },
        浦东:{},
    },
    山东:{},
}


current_layer = menu  #给各层字典的key值赋一个变量
layer = [ ]    #用于存储上一级菜单记录
while True:
    for i in current_layer:   #进入之后打印这一级字典的key值
        print(i)
    choice = input(>>>)
    if choice in current_layer:
        layer.append(current_layer)    #这级字典保存在layer中作为“b”的返回记录
        current_layer = current_layer[choice]   # 把即将进入的子菜单赋值给current_layer动态变量,然后让这个子菜单作为一个父菜单再去进行下一轮循环
    elif choice == b:
        if len(layer) != 0:
            current_layer = layer.pop()  #把列表layer中保存的上一条记录(父级菜单)取出来,并从layer中删除,然后把取出来的上一级菜单赋值给current_layer。
        else:
            print(当前已是第一级菜单 )
    elif choice == q:
        exit(bye)

 

三级菜单:动态变量、列表储存菜单记录

标签:变化   存在   color   中关村   删除   append   菜单   bsp   赋值   

原文地址:https://www.cnblogs.com/neozheng/p/8329234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!