路飞学城系列:第2章 数据类型&文件操作-作业(1)【三级菜单】

# coding: utf-8

""" 三级菜单

需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典

"""

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

# 当前所在层级
current_layer = menu
# 上一层级,list列表存储
last_layer = []
# 判断是否退出循环(胡导推荐)
is_not_exit = True

# 通过循环遍历菜单
while is_not_exit:
    # 打印所在层级
    for layer in current_layer:
        print(layer)

    # 用户输入
    user_select = input(">>:")
    # 对用户输入进行if条件判断(进入下一层、返回上一层b、退出q、输入有误)
    # 进入下一层
    if user_select in current_layer:
        # 把当前层级记录到存放“上一层级”的列表
        last_layer.append(current_layer)
        # 更新当前层级为新选择的层级
        current_layer = current_layer[user_select]
    # 返回上一层b
    elif user_select == "b":
        # 判断上一层是否为空
        if len(last_layer) > 0:
            # 从“上一层级”列表取出上一层,赋值给当前层级,并且把上一层级从列表移除
            current_layer = last_layer.pop()
        else:
            print("到顶层了兄弟~")
    # 退出q
    elif user_select == "q":
        # exit("程序退出,谢谢使用!")
        is_not_exit = False
        print("程序退出,谢谢使用!")
    # 输入有误
    else:
        print("输入有误,请重新输入~")
原文地址:https://www.cnblogs.com/lizhen416/p/13662164.html