zoukankan      html  css  js  c++  java
  • 三级菜单

    用递归实现:

    menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': {}, 'youku': {}, }, '上地': { '百度': {}, }, }, '昌平': { '沙河': { '老男孩': {}, '北航': {}, }, '天通苑': {}, '回龙观': {}, }, '朝阳': {}, '东城': {}, }, '上海': { '闵行': { "人民广场": { '炸鸡店': {} } }, '闸北': { '火车战': { '携程': {} } }, '浦东': {}, }, '山东': {}, } def threeMenu(dic): while 1: for k in dic: print(k) key = input('输入城市(按b返回上一层,按q退出):') if key == 'b' or key == 'q': return key elif key in dic.keys() and dic[key]: ret = threeMenu(dic[key]) if ret == 'q': return ret elif (not dic.get(key)) or (not dic[key]): continue
    menu = {
        '北京': {
            '海淀': {
                '五道口': {
                    'soho': {},
                    '网易': {},
                    'google': {}
                },
                '中关村': {
                    '爱奇艺': {},
                    '汽车之家': {},
                    'youku': {},
                },
                '上地': {
                    '百度': {},
                },
            },
            '昌平': {
                '沙河': {
                    '老男孩': {},
                    '北航': {},
                },
                '天通苑': {},
                '回龙观': {},
            },
            '朝阳': {},
            '东城': {},
        },
        '上海': {
            '闵行': {
                "人民广场": {
                    '炸鸡店': {}
                }
            },
            '闸北': {
                '火车战': {
                    '携程': {}
                }
            },
            '浦东': {},
        },
        '山东': {},
    }
    def threeMenu(dic):
        while 1:
            for k in dic:
                print(k)            # 北京 上海 山东
            key = input('输入城市(按b返回上一层,按q退出):')          # 假设输入 北京
            if key == 'b' or key == 'q': return key
            elif key in dic.keys() and dic[key]:
                ret = threeMenu(dic[key])       # ---------------------------------- 调用
                if ret == 'q': return ret
            elif (not dic.get(key)) or (not dic[key]):
                continue
    
    --------------------------------------------------------------------------------------------------------------------------------------------------
    
    dic = {
            '海淀': {
                '五道口': {
                    'soho': {},
                    '网易': {},
                    'google': {}
                },
                '中关村': {
                    '爱奇艺': {},
                    '汽车之家': {},
                    'youku': {},
                },
                '上地': {
                    '百度': {},
                },
            },
            '昌平': {
                '沙河': {
                    '老男孩': {},
                    '北航': {},
                },
                '天通苑': {},
                '回龙观': {},
            },
            '朝阳': {},
            '东城': {},
        },
    def threeMenu(dic):
        while 1:
            for k in dic:
                print(k)               # 海淀 昌平 朝阳 东城
            key = input('输入城市(按b返回上一层,按q退出):')      # 假设输入 昌平
            if key == 'b' or key == 'q': return key
            elif key in dic.keys() and dic[key]:
                ret = threeMenu(dic[key])       # ---------------------------------- 调用           回来的时候 ret = b
                if ret == 'q': return ret
            elif (not dic.get(key)) or (not dic[key]):
                continue
    
    --------------------------------------------------------------------------------------------------------------------------------------------------
    
    dic =  {
                '沙河': {
                    '老男孩': {},
                    '北航': {},
                },
                '天通苑': {},
                '回龙观': {},
            },
    def threeMenu(dic):
        while 1:
            for k in dic:
                print(k)                # 沙河 天通苑 回龙观
            key = input('输入城市(按b返回上一层,按q退出):')      # 假设输入 回龙观(一直继续)  输入‘b’
            if key == 'b' or key == 'q': return key          # return 'b'
            elif key in dic.keys() and dic[key]:
                ret = threeMenu(dic[key])
                if ret == 'q': return ret
            elif (not dic.get(key)) or (not dic[key]):
                continue
    分步解析

     用堆栈实现:

    menu = {
        '北京': {
            '海淀': {
                '五道口': {
                    'soho': {},
                    '网易': {},
                    'google': {}
                },
                '中关村': {
                    '爱奇艺': {},
                    '汽车之家': {},
                    'youku': {},
                },
                '上地': {
                    '百度': {},
                },
            },
            '昌平': {
                '沙河': {
                    '老男孩': {},
                    '北航': {},
                },
                '天通苑': {},
                '回龙观': {},
            },
            '朝阳': {},
            '东城': {},
        },
        '上海': {
            '闵行': {
                "人民广场": {
                    '炸鸡店': {}
                }
            },
            '闸北': {
                '火车战': {
                    '携程': {}
                }
            },
            '浦东': {},
        },
        '山东': {},
    }
    
    l = [menu]
    while l:
        for k in l[-1]:
            print(k)
        key = input('输入城市(按b返回上一层,按q退出):')
        if key in l[-1].keys() and l[-1][key]:
            l.append(l[-1][key])
        elif key == 'b':
            l.pop()
        elif key == 'q':
            break
        else:
            continue
  • 相关阅读:
    非科班毕业生四个月的面试准备,网易三轮面面试,成功拿下offer(面经奉上)全靠这份阿里面试手册
    太赞了!华为鸿蒙工程师总结的Linux笔记,提供下载
    阿里java岗面试有多难?分享阿里面试真题(附面试专题答案)及P7所要掌握的技能体系!
    阿里腾讯百度等大厂2020秋招面试总结,内附答案
    小小码农的大梦想,2020最新BAT大厂面试题干货总结
    历经三个月的紧张复习,秋招终于进了百度,附上面经分享希望可以帮助大家
    这份《高性能MySQL》适合数据库管理员(DBA)阅读,也适合开发人员参考学习
    这份程序员必备书籍《Spring实战4》,你确定不看看?
    自学JAVA的我提交给2020的问卷答案,JAVA核心知识点分享这一年来的努力并没有白费!
    Delphi连接数据库的两种方式
  • 原文地址:https://www.cnblogs.com/lpgit/p/9381269.html
Copyright © 2011-2022 走看看