zoukankan      html  css  js  c++  java
  • 多级菜单的技巧与逻辑

    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;
  • 相关阅读:
    XNA中的中文输入(三)
    0.033秒的艺术 测试程序性能
    0.033秒的艺术 List.Sort以及快速排序
    从Demo到Engine(二) Render Queue Sort
    Bounding Volume Performance Test:AABB vs OBB vs Sphere
    0.033秒的艺术 Radix Sort
    从Demo到Engine(一) IRenderable
    0.033秒的艺术 for vs. foreach
    XNA中的中文输入(一)
    0.033秒的艺术 XNA数学库中的陷阱
  • 原文地址:https://www.cnblogs.com/qqq789001/p/13363912.html
Copyright © 2011-2022 走看看