每日一题.PYTHON模拟编写多级菜单?

原文数据:

area_dict = {
    'huadong': {
        'shandong': {
            'jinan': [
                u'历下区',
                u'市中区',
            ],
            'qingdao': [
                u'市南区',
                u'市北区',
            ]
        },
        'zhejiang': {
            'hangzhou': [
                u'下城区',
                u'江干区',
            ],
            'wenzhou': [
                u'龙湾区',
                u'瓯海区',
            ],
        },
    }
}

具体要求:

  1. 多级菜单

  2. 可依次选择进入各子菜单

代码流程:

134447_dTuP_2612057.png

代码实现:

# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# OsChina: http://my.oschina.net/pydevops/
# Purpose:
#
"""
import pprint


def main():
    """Main function."""

    cur_level = 1
    area_dict = {
        'huadong': {
            'shandong': {
                'jinan': [
                    u'历下区',
                    u'市中区',
                ],
                'qingdao': [
                    u'市南区',
                    u'市北区',
                ]
            },
            'zhejiang': {
                'hangzhou': [
                    u'下城区',
                    u'江干区',
                ],
                'wenzhou': [
                    u'龙湾区',
                    u'瓯海区',
                ],
            },
        }
    }

    while True:
        # 网页中多级菜单的下拉就相当于输入
        # --------------------------------------------------------
        level_str = '-> '*cur_level
        list_or_tuple = False
        if isinstance(area_dict, dict):
            key_enum = enumerate(area_dict.keys())
        elif isinstance(area_dict, (list, tuple)):
            list_or_tuple = True
            key_enum = enumerate(area_dict)
        else:
            print '%s %s %s' % (level_str, 0, area_dict)
            break

        for area_key, area_val in key_enum:
            print '%s %s %s' % (level_str, area_key, area_val)

        cur_choice = raw_input('please input your choice: ').strip()
        if cur_choice.isdigit():
            cur_choice = int(cur_choice)
        else:
            continue
        if list_or_tuple:
            key_value = area_dict[cur_choice]
        else:
            key_name = area_dict.keys()[cur_choice]
            key_value = area_dict[key_name]

        area_dict = key_value
        cur_level += 1
        # --------------------------------------------------------

if __name__ == '__main__':
    main()


转载于:https://my.oschina.net/pydevops/blog/616037

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值