• python3 实现一个多级菜单小功能


    记录下一下

      1 #!/usr/bin/env python3
      2 '''
      3 需求:三级菜单
      4 三级菜单,依次进入子菜单
      5 '''
      6 City = {
      7     '北京':{
      8         '大兴区':[
      9             '亦庄','黄村','中信新城','B返回','Q退出'
     10         ],
     11         '丰台区':[
     12             '岳各庄','五棵松','丰台路口','B返回','Q退出'
     13         ],
     14         '朝阳区':[
     15             '劲松','双井','国贸','B返回','Q退出'
     16         ],
     17         'B返回':'返回',
     18         'Q退出':'退出'
     19     },
     20     '上海':{
     21         '浦东区':[
     22             '世纪大道','陆家嘴','盛世年华','B返回','Q退出'
     23         ],
     24         '普陀区':[
     25             '东方汽配城','金沙社区','东锦国际大厦','B返回','Q退出'
     26         ],
     27         '徐汇区':[
     28             '上海应用技术大学','上海长途客运南站','上海东方体育中心','B返回','Q退出'
     29         ],
     30         'B返回': '返回',
     31         'Q退出': '退出'
     32     },
     33     '广州':{
     34         '天河区':[
     35             '珠江公园','天河体育场','广东师范大学','B返回','Q退出'
     36         ],
     37         '白云区':[
     38             '广州体育馆','白云文化广场','广州百信广场','B返回','Q退出'
     39         ],
     40         '海珠区':[
     41             '中山大学','城市职业学院','南方医科大学','B返回','Q退出'
     42         ],
     43         'B返回': '返回',
     44         'Q退出': '退出'
     45     }
     46 }
     47 
     48 # print(City)
     49 
     50 Choice_of_city = list(City.keys())#字典转换为列表
     51 # print(City.keys())
     52 # print(City.values())
     53 #打印字典使用format函数格式化
     54 # print('{0[0]} {0[1]} {0[2]}'.format(Choice_of_city))
     55 
     56 def menu():#使用函数def
     57     while True:#只要为真就无限循环
     58         print('{0[0]} {0[1]} {0[2]}'.format(Choice_of_city))#将列表Choice_of_city以函数format格式化打印
     59         User_input_City = input('请选择城市:').strip()#用户输入,次数strip为移除空白
     60         if User_input_City in Choice_of_city:#判断用户输入的信息是否在列表User_input_City中
     61             District = list(City[User_input_City])#获取用户输入信息并根据用户输入信息取出字典City的values,
     62             # 此处用户输入信息User_input_City相当于字典City的keys,并且把获取的values转换为列表District
     63             while True:#只要为真就无限循环
     64                 # if User_input_City in Choice_of_city:
     65                 print('{0[0]} {0[1]} {0[2]} {0[3]} {0[4]}'.format(District))#将列表District以函数format格式化打印
     66                 User_input_District = input('请选择区县:').strip()#用户输入
     67                 if User_input_District not in District:#判断用户输入不在于列表District中
     68                     print('输入错误,请重新输入!!')
     69                     continue#退出当前循环继续下一次循环
     70                 if User_input_District in District:#判断用户输入是否在列表District中
     71                     if User_input_District == District[3]:#判断用户输入是否等于District中第4个元素
     72                         break#跳出当前循环
     73                     elif User_input_District == District[4]:#判断用户输入是否等于District中第4个元素
     74                         return#退出整个函数,这里用来退出所有循环
     75                     else:
     76                         while True:
     77                             Township = (City[User_input_City][User_input_District])
     78                             print('{0[0]} {0[1]} {0[2]} {0[3]} {0[4]}'.format(Township))
     79                             User_input_township = input('选择乡镇:').strip()
     80                             if User_input_township not in Township:
     81                                 print('输入错误,请重新输入!!')
     82                                 continue
     83                             if User_input_township in Township:
     84                                 if User_input_township == Township[3]:
     85                                     break
     86                                 if User_input_township == Township[4]:
     87                                     return
     88                                 else:
     89                                     print('Bingo!!!')
     90                                     return
     91                             else:
     92                                 continue
     93                 else:
     94                     break
     95             else:
     96                 continue
     97         else:
     98             print('输入错误,请重新输入!!')
     99             continue
    100         # else:
    101         #         continue
    102     # else:
    103     #     print('输入不正确,请重新输入!!')
    104 menu()

     另外在写了一个版本:

      1 #!/usr/bin/env python3
      2 City = {
      3     '北京市':{
      4         '大兴区':[
      5             '亦庄','黄村','中信新城','返回','退出'
      6         ],
      7         '丰台区':[
      8             '岳各庄','五棵松','丰台路口','返回','退出'
      9         ],
     10         '朝阳区':[
     11             '劲松','双井','国贸','返回','退出'
     12         ],
     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 dic_city = {}
     44 dic_district = {}
     45 dic_address = {}
     46 def menu():
     47     while True:
     48         for i in enumerate(City, 1):                        #循环字典City,并在keys前加序号
     49             print(i[0], i[1])                               #循环打印序号+City的keys
     50             dic_city[str(i[0])] = i[1]                      #将打印的序号和字典City的keys循环加入新的字典dic_city中,此处str将序号转换为字符串,方便后面判断
     51         user_input = input('选择前往城市编号:').strip()         #用户输入,strip去掉两侧空格
     52         # print(dic_city)
     53         if len(user_input) == 0:                                #计算用户输入长度是否为0,判断输入是不是空值
     54             print('输入不能为空,请重新输入!')
     55             continue                                            #退出本次循环
     56         elif user_input in dic_city:                            #判断用户输入是否在字典dic_city中
     57             while True:
     58                 for i in enumerate((City[dic_city[user_input]]),1):#循环中添加序号
     59                     print(i[0],i[1])
     60                     dic_district[str(i[0])] = i[1]
     61                 district = input('区县选择或退出返回(请填写序号即可):').strip()
     62                 if len(district) == 0:                              #计算用户输入长度是否为0,判断输入是不是空值
     63                     print('输入不能为空,请重新输入!')
     64                     continue
     65                 elif district == list(dic_district)[-2]:            #判断用户输入是否等于倒数第二个元素,即:返回
     66                     break
     67                 elif district == list(dic_district)[-1]:            #判断用户输入是否等于最后一个元素,即:退出
     68                     return                                          #退出整个函数,这里用来退出多层循环
     69                 elif district not in dic_district:                  #判断用户输入不在字典dic_district中
     70                     print('输入不正确,请重新输入!')
     71                     continue
     72                 else:
     73                     while True:
     74                         for i in enumerate((City[dic_city[user_input]][dic_district[district]]),1):#多层字典,最外层字典City,
     75                             # [dic_city[user_input]新字典中取到City的keys,这样取到第二层字典;dic_district[district]新字典中取到
     76                             # 第二层字典的keys,City[dic_city[user_input]][dic_district[district]]整个是第二层字典加keys,最后取
     77                             # 出第三层
     78                             print(i[0],i[1])
     79                             dic_address[str(i[0])] = i[1]
     80                         address = input('选择地址或者返回退出(请填写序号即可):').strip()
     81                         if len(address) == 0:
     82                             print('输入不能为空,请重新输入!')
     83                             continue
     84                         elif address == list(dic_address)[-2]:
     85                             break
     86                         elif address == list(dic_address)[-1]:
     87                             return
     88                         elif address not in dic_address:
     89                             print('输入不正确,请重新输入!')
     90                             continue
     91                         else:
     92                             addr = '''
     93                             您选择的地址为:%s%s%s                                      
     94                             '''%(dic_city[user_input],dic_district[district],dic_address[address])#段落输出格式,%s代替字符串
     95                             print(addr.strip())
     96                             return
     97                     continue
     98                 break
     99             continue
    100         else:
    101             print('输入不正确,请重新输入!')
    102             continue
    103 menu()
  • 相关阅读:
    Vue日常报错
    VUE学习笔记二
    VUE学习笔记一
    Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured
    Apache Shiro安全(权限框架)学习笔记二
    Apache Shiro安全(权限框架)学习笔记一
    SSH框架整合
    Spring SpringMVC 和 Springboot 的关系(转载)
    SSM日常报错
    Mybatis笔记二
  • 原文地址:https://www.cnblogs.com/xieyi5420/p/10406722.html
Copyright © 2020-2023  润新知