三级菜单实例

Posted 一个好人的博客园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三级菜单实例相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:XXX


map = {
    \'浦西\':{
        \'黄浦区\':{
            \'城隍庙\':[\'小吃\',\'九曲桥\',\'绿波廊\'],
            \'南京路步行街\':[\'第一百货\',\'沈大成\',\'永安百货\'],
        },
        \'徐汇区\':{
            \'徐家汇\':[\'百脑汇\',\'汇金百货\',\'港汇广场\'],
            \'龙华寺\':[\'古寺之一\',\'风水宝地\',\'烧香灵\'],
        },
        \'静安区\':{
            \'马戏城\':[\'时空之旅\',\'马戏\',\'特技表现\'],
            \'大灵灵石公园\':[\'郁金香展\',\'人工湖划船\',\'婚纱拍摄地\'],
        },
    },
    \'浦东\':{
        \'浦东新区\':{
            \'东方明珠\':[\'上海标志性地标\',\'太空舱\',\'旋转餐厅\'],
            \'海洋水族馆\':[\'亚洲第一\',\'海底隧道\',\'28个主题馆\'],
        },
        \'原川沙\':{
            \'迪士尼乐园\':[\'大陆第一\',\'七大主题乐园\',\'两座主题酒店\'],
        },
        \'原南汇\':{
            \'野生动物园\':[\'首座国家级野生动物园\',\'两大参观区\',\'AAAAA\'],
            \'南汇鲜花港\':[\'多肉展\',\'百合花展\',\'菊花展\'],
        },
    },
    \'崇明\':{
        \'中北部\':{
            \'东平森林公园\':[\'AAAAA\',\'华东区最大的人造平原森林\',\'上海著名旅游胜地\'],
        },
        \'南部\':{
            \'西沙湿地\':[\'候鸟\',\'日落\',\'观潮\'],
        },
        \'西部\':{
            \'明珠湖\':[\'天然湖泊\',\'鸬鹚保护地\',\'扶摇直上\'],
        },
    },
}

level = []

while True:
    for key in map:
        print(key)
    choice = input("请选择,按b退到上一级菜单:").strip()
     # if choice == \'b\':break  # 由于不用while套while的用法,这样写就不合理
    if choice == \'b\':  # 这里输入b需要退到上一级,却列表中最后一个值
        if len(level) == 0:break  # 如果level长度为0,就退出整个while语句
        map = level[-1]
        level.pop()  # 这里需要将level列表最后一个值删除
    if len(choice) == 0 or choice not in map:continue  # 这里continue就是继续下一个语句

    level.append(map)
    map = map[choice]  # 这里是核心代码,每次把用户输入的内容,作为子字典


\'\'\'
此段代码的核心是map = map[choice]
作用是将重复代码(while套while)减少
第一,关键点时查找字典的时候,定位到下一级字典,并且将下一级字典赋值给while语句中的字典
第二,由于用了第一点的语句,那么就需要给退出上一级菜单做标记。
    解决办法就是,用一个空列表,将父字典的key值赋值给空列表的最后一位
    如果退出的时候,就将列表中最后一位删除即可。
\'\'\'
View Code

 

以上是关于三级菜单实例的主要内容,如果未能解决你的问题,请参考以下文章

创建片段的新实例时菜单未膨胀

三级菜单实例

三级菜单实例

三级菜单实例

简单的三级菜单实例

Python实例---三级菜单的实现[high]