三级菜单实例

#!/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

 

转载于:https://www.cnblogs.com/gzz041/p/6902918.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值