python初级之路-多级菜单

前言:

        1、实现一个三级菜单,例如:省-市-县

        2、可依次选择进入各级菜单,可以选择返回上一层菜单,以及直接退出整个菜单

        3、所需知识点:列表、字典

 

思路:

        将‘省-市-县’数据保存在字典city变量中,根据用户输入返回对应子级菜单;如果用户输入‘b’或者‘B’,就返回上一级菜单;输入‘q’或者‘Q’,则退出整个菜单(父级菜单只有‘q’或者‘Q’选择)。

 

实现代码:

 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 
 4 city = {     # 定义一个'省-市-县'字典变量
 5     '北京': {
 6         '东城区': ['东华门', '景山', '交道口', '安定门', '北新桥', '朝阳门', '建国门', 'B & b', 'Q & q'],
 7         '朝阳区': ['六里屯', '八里庄', '三里屯', '和平街', '左家庄', '香河园', '建外', 'B & b', 'Q & q'],
 8         '丰台区': ['清源', '兴丰', '林校路', '观音寺', '天宫院', '高米店', '荣华', '博兴', 'B & b', 'Q & q'],
 9         '海淀区': ['海淀', '青龙桥', '清华园', '燕园', '西三旗', '甘家口', '万寿路', 'B & b', 'Q & q'],
10         '通州区': ['中仓', '新华', '北苑', '玉桥', '潞源', '通运', '永顺', '梨园', 'B & b', 'Q & q'],
11         '大兴区': ['观音寺', '林校路', '清源', '天宫院', '博兴', '荣华', '青云店镇', 'B & b', 'Q & q'],
12         '昌平区': ['城北', '南口', '马池口', '沙河', '东小口', '回龙观', 'B & b', 'Q & q'],
13         'B & b': '返回',
14         'Q & q': '退出'
15     },
16     '上海': {
17         '黄浦区': ['南京东路', '外滩', '瑞金二路', '豫园', '老西门', '小东门', '五里桥', 'B & b', 'Q & q'],
18         '普陀区': ['桃浦镇', '万里', '甘泉路', '石泉路', '长寿路', '宜川路', '长征镇', 'B & b', 'Q & q'],
19         '浦东新区': ['曹路镇', '金桥镇', '高行镇', '高东镇', '张江镇', '三林镇', '惠南镇', 'B & b', 'Q & q'],
20         '杨浦区': ['定海路', '平凉路', '江浦路', '四平路', '控江路', '长白新村', '殷行', 'B & b', 'Q & q'],
21         '宝山区': ['罗店镇', '大场镇', '杨行镇', '月浦镇', '罗泾镇', '顾村镇', '高境镇', 'B & b', 'Q & q'],
22         '徐汇区': ['湖南路', '天平路', '枫林路', '徐家汇', '康健新村', '虹梅路', '田林', 'B & b', 'Q & q'],
23         'B & b': '返回',
24         'Q & q': '退出'
25     },
26     '深圳': {
27         '罗湖区': ['桂园', '黄贝', '东门', '南湖', '东湖', '莲塘', '清水河', 'B & b', 'Q & q'],
28         '福田区': ['园岭', '南园', '福田', '梅林', '香蜜湖', '莲花', '华强北', 'B & b', 'Q & q'],
29         '宝安区': ['新安', '西乡', '航城', '福永', '福海', '沙井', '新桥', '松岗', 'B & b', 'Q & q'],
30         '龙华区': ['观湖', '民治', '龙华', '大浪', '福城', '观澜', 'B & b', 'Q & q'],
31         '南山区': ['南山', '南头', '西丽', '沙河', '蛇口', '桃源', 'B & b', 'Q & q'],
32         'B & b': '返回',
33         'Q & q': '退出'
34     },
35     'Q & q': '退出'
36 }
37 
38 # print(city['深圳'].keys())
39 while True:
40     print()
41     print(list(city.keys()))    # 将一级菜单给用户参考输入
42     ct = input("请输入要查询的城市:").strip()
43     if ct in city:    # 判断用户输入是否在一级菜单中,如果是则打印二级菜单选项
44         print()
45         print(list(city[ct].keys()))
46         while True:
47             area = input("请输入要查询的地区:")
48             if area in city[ct].keys():
49                 print()
50                 print(list(city[ct][area]))
51                 while True:
52                     street = input("请输入要查询的街道:")    # 要求用户输入三级菜单
53                     if street in city[ct][area]:
54                         print("您好,欢迎来到%s市%s%s街道。" % (ct, area, street))
55                         quit()
56                     elif street == 'b' or street == 'B':
57                         print("返回上一层。")
58                         break
59                     elif street == 'q' or street == 'Q':
60                         print("退出查询,欢迎再次使用。")
61                         quit()
62                     else:
63                         print("未查询到%s市%s%s街道,请重新输入。" % (ct, area, street))
64             elif area == 'b' or area == 'B':    # 当用户输入'b'或'B'时,返回上一级菜单
65                 print("返回上一层。")
66                 break
67             elif area == 'q' or area == 'Q':
68                 print("退出查询,欢迎再次使用。")
69                 quit()
70             else:
71                 print("未查询到%s市%s,请重新输入。" % (ct, area))
72     elif ct == 'q' or ct == 'Q':    # 当用户输入'q'或者'Q'时,退出整个查询
73         print('退出查询,欢迎再次使用。')
74         quit()
75     else:    # 当查询不到用户输入时,要求用户重新输入
76         print("您输入的城市暂未入库,请重新输入。")

 

实现效果:

posted @ 2020-06-30 18:01  Zombie☠️  阅读(250)  评论(0)    收藏  举报