码迷,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
迷上了代码!