• 多级菜单的技巧与逻辑


    menu = {
    '北京': {
    '海淀': {
    '五道口': {
    'soho': {},
    '网易': {},
    'google': {}
    },
    '中关村': {
    '爱奇艺': {},
    '汽车之家': {},
    'youku': {},
    },
    '上地': {
    '百度': {},
    },
    },
    '昌平': {
    '沙河': {
    '老男孩': {},
    '北航': {},
    },
    '天通苑': {},
    '回龙观': {},
    },
    '朝阳': {},
    '东城': {},
    },
    '上海': {
    '闵行': {
    "人民广场": {
    '炸鸡店': {}
    }
    },
    '闸北': {
    '火车战': {
    '携程': {}
    }
    },
    '浦东': {},
    },
    '山东': {},
    }
    方法一:需要用户输入汉字;用了get方法。
    def menu_func(menu):
    while True:
    for name in menu:
    print(name)
    key = input('>>>').strip() # 北京
    if menu.get(key): #get方法只有字典才有,故如果menu字典中嵌套有列表,该方法就可能报错。
    dic = menu[key]
    flag = menu_func(dic) # menu_func(menu['北京'])
    if not flag: return False #
    elif key.upper() == 'B': return True
    elif key.upper() == 'Q': return False

    menu_func(menu)

    方法二:只需要输入数字就可以了。
    def menu_func(menu):
    while True:
    for index,name in enumerate(menu,1): #使用枚举函数遍历字典的键。
    print(index, name)
    print("请选择要查询城市前的数字, 如要返回,请输入'b'或'B', 如要退出,请输入‘q'或'Q'.")
    key = input('>>>').strip()
    if key.isdigit(): #判断是否是纯数字。key不能强转。
    if int(key) in range(1,4): #此处key必须强转为int.
    city = list(menu.keys())[int(key)-1] #获取城市编号对应的城市。
    dic = menu[city]
    flag = menu_func(dic)
    if not flag: return False
    elif key.upper() == 'B': return True
    elif key.upper() == 'Q': return False




    知识:字典的get方法。注意:列表没有这个方法。
            # 如:dict.get(k,d) 其中 get相当于一条if...else...语句,参数k在字典中,字典将返回dict[k];如果参数k不在字典中则返回参数d,如果K在字典中则返回k对应的value值
            # dic = {5:2,3:4}
            # print dic.get(3,0)返回的值是4;
            # Print dic.get(1,0)返回值是0;
  • 相关阅读:
    web前端之Javascript的输出
    python编码问题
    python面试题1
    机器学习三剑客补充
    JavaScript设计模式与开发实践 组合模式
    JavaScript设计模式与开发实践 命令模式
    JavaScript设计模式与开发实践 发布—订阅模式
    JavaScript设计模式与开发实践 迭代器模式
    JavaScript设计模式与开发实践 代理模式
    JavaScript设计模式与开发实践 策略模式
  • 原文地址:https://www.cnblogs.com/qqq789001/p/13363912.html
Copyright © 2020-2023  润新知