前言:
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("您输入的城市暂未入库,请重新输入。")
实现效果:
原文:https://www.cnblogs.com/lanten2020/p/13215193.html