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

    Python之三级菜单

    菜单:

     1 menu = {
     2     '北京':{
     3         '海淀':{
     4             '五道口':{
     5                 'soho':{},
     6                 '网易':{},
     7                 'google':{}
     8             },
     9             '中关村':{
    10                 '爱奇艺':{},
    11                 '汽车之家':{},
    12                 'youku':{},
    13             },
    14             '上地':{
    15                 '百度':{},
    16             },
    17         },
    18         '昌平':{
    19             '沙河':{
    20                 '老男孩':{},
    21                 '北航':{},
    22             },
    23             '天通苑':{},
    24             '回龙观':{},
    25         },
    26         '朝阳':{},
    27         '东城':{},
    28     },
    29     '上海':{
    30         '闵行':{
    31             "人民广场":{
    32                 '炸鸡店':{}
    33             }
    34         },
    35         '闸北':{
    36             '火车战':{
    37                 '携程':{}
    38             }
    39         },
    40         '浦东':{},
    41     },
    42     '山东':{},
    43 }
    菜单

    三级菜单:

     1 exit_flag = False
     2 while not exit_flag:
     3     #进入while循环,在for循环里遍历menu里的内容。
     4     for key in menu:
     5         print(key)
     6     #等待用户的输入,并去掉空白。
     7     choice = input("第一层>>:").strip()
     8     #判断输入的内容长度。为0则是没输入。结束本层判断,继续等待输入。
     9     if len(choice) == 0 :
    10         continue
    11     if choice == 'q':
    12         # 当exit_flag变量的值为True时,not exit_flag为False,结束循环
    13 
    14         exit_flag = True
    15         continue
    16     #判断输入的内容在字典中,进入此省下一级
    17     if choice in menu:
    18         #while循环防止在进入下一级菜单时,打印上一级的内容
    19         while not exit_flag:
    20             #通过字典拿到上一级输入的内容,并将所属上一级的内容赋予变量next_layer
    21             next_layer = menu[choice]
    22             #用for循环遍历next_layer的内容。
    23             for key2 in next_layer:
    24                 print(key2)
    25             #等待用户继续输入,并去掉空白。
    26             choice2 = input("第二层>>:").strip()
    27             #判断输入的内容长度。为0则是没输入。结束本层判断,继续等待输入。
    28             if len(choice2) == 0:
    29                 continue
    30             #如果输入的是字符串‘b’,则结束本次循环,并返回上一级
    31             if choice2 == 'b':
    32                 break
    33             #如果输入字符串‘q’,则退出本次循环。返回上一级菜单。
    34             if choice2 == 'q':
    35                 # 当exit_flag变量的值为True时,not exit_flag为False,结束循环
    36                 exit_flag = True
    37                 continue
    38             # 判断输入的内容是否在next_layer中,进入此下一级
    39             if choice2 in next_layer:
    40                 # while循环防止在进入下一级菜单时,打印上一级的内容
    41                 while not exit_flag:
    42                     # 通过拿到next_layer的内容,并将所属上一级的内容赋予变量next_layer2
    43                     next_layer2 = next_layer[choice2]
    44                     # 用for循环遍历next_layer2的内容。
    45                     for key3 in next_layer2:
    46                         print(key3)
    47                     # 等待用户继续输入,并去掉空白。
    48                     choice3 = input("第三层>>>:").strip()
    49                     # 判断输入的内容长度。为0则是没输入。结束本层判断,继续等待输入。
    50                     if len(choice3) == 0:
    51                         continue
    52                     # 如果输入的是字符串‘b’,则结束本次循环,并返回上一级
    53                     if choice3 == 'b':
    54                         break
    55                     # 如果输入字符串‘q’,则退出本次循环。返回上一级菜单。
    56                     if choice3 == 'q':
    57                         # 当exit_flag变量的值为True时,not exit_flag为False,结束循环
    58                         exit_flag = True
    59                         continue
    60                     # 如果输入的第三层内容在next_layer2中,则进入第三层
    61                     if choice3 in next_layer2:
    62                         # while循环防止在进入下一级菜单时,打印上一级的内容
    63                         while not exit_flag:
    64                             # 通过拿到next_layer2的内容,并将所属上一级的内容赋予变量next_layer3
    65                             next_layer3 = next_layer2[choice3]
    66                             # 用for循环遍历next_layer2的内容。
    67                             for key4 in next_layer3:
    68                                 print(key4)
    69                             # 等待用户继续输入,并去掉空白。
    70                             choice4 = input("第四层>>>>:").strip()
    71                             # 如果输入的是字符串‘b’,则结束本次循环,并返回上一级
    72                             if choice4 == 'b':
    73                                 break
    74                             if choice4 == 'q':
    75                                 #当exit_flag变量的值为True时,not exit_flag为False,结束循环
    76                                 exit_flag = True
    77                                 continue
    三级菜单初级版

    三级菜单升级版:

    #定义一个初始化层级,当前层
    current_layer = menu   #当前层
    last_layers = [menu]    #上一层
    
    while True:
        for key in current_layer:
            print(key)
    
        choice = input('>>:').strip()
        if len(choice) == 0:
            continue
            #进入下一层级
        if choice in current_layer:
            # 取当前层,添加到列表
            last_layers.append(current_layer)
            #当起层
            current_layer = current_layer[choice]
        if choice == 'b':
            if last_layers:
                #取上一层,赋值给current_layer
                current_layer = last_layers[-1]
                last_layers.pop()
        if choice == 'q':
            break
  • 相关阅读:
    git引用初识(HEAD、分支、tag)(九)
    gitee的使用(七)
    git remote add <shortname> <url>命令具体解析(六)
    电脑登不进github(五)
    监控项目Spring-boot的请求及响应格式(十八)
    vue中的this.message提示框换行(二十四)
    动态加载form表单报错[Vue warn]: Error in beforeDestroy hook: "Error: [ElementForm]unpected width " found in(二十三)
    github desktop使用问题(三)
    idea使用git常见问题汇总(二)
    spring集成mq相关
  • 原文地址:https://www.cnblogs.com/george92/p/8971223.html
Copyright © 2011-2022 走看看