python循环判断应用二(三级实现菜单)
作业要求:
多级菜单
- 三级菜单
- 可依次选择进入各子菜单
- 所需新知识点:列表、字典
1.需要建立数据字典列表如下,例子如下。
1 dcit = { 2 '北京':{'西城区':{'西直门':['肯德基','麦当劳'],'动物园':['公园','服装市场']}, 3 '东城区':{'东单':['DQ冰淇凌','八喜'],'三里屯':['酒吧','工体']}, 4 '朝阳区':{'北辰':['鸟巢','水立方'],'国展':['CBD','大型商场']}}, 5 '上海':{'黄浦区':{'城隍庙':['书店','水煎包'],'黄埔一路':['赛百味','成都小吃']}, 6 '长宁区':{'一街':['豪宅','服装店'],'二街':['肯德基','和路雪']}, 7 '宝山区':{'101路':['乐器店','篮球场'],'202路':['酒吧','书店']}}, 8 '广州':{'天河区':{'一桥':['足球场','球衣店'],'二桥':['大型商场','酒吧']}, 9 '越秀区':{'1区':['公园','中学'],'2q区':['链家','我爱我家']}} 10 }
2.根据开启字典列表形式来实现多级内容显示。循环出一记列表,
1 for cy in enumerate(f_city.keys()): #打印第一层城市(循环出来)用enumerate来标记数字次序 2 print("%s:%s" %cy) #依照数字方式打印城市
3.根据选择循环出二级菜单,【】里面的值是选在的数值,二级和三级如下:
for aa in enumerate(f_city[mm[num]].keys()):# 打印二级城市或区,用enumerate来标记数字次序 print("%s;%s" %aa) for st in enumerate(f_city[mm[num]][mmm[numm]].keys()): print("%s;%s" %st) #其中mm mum mmm mumm 都是变量值
4.本次使用了数据类型判断格式,.isdigit()参数,当一个值为数字时给出值为真,否则不为真。案例如下:
num= input('请选择:').strip() #让其输入选择 strip()内容去除空格 nums = num.isdigit() # 值得判断结果给于定义 print (nums) #当输入的为数字类型数据时候打印出来的值为真,否则不为真。
流程图:

不多说具体看代码
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author: Delong Wang 4 import sys 5 f_city = {'深圳':{'罗湖区':{'黄贝':['黄贝岭','新秀','水库'],'东门':['商业街','步行街']}, 6 '福田区':{'南园':['南园村','滨河大道'],'梅林':['上梅林','下梅林']}, 7 '龙华新区':{'龙华':['清湖','万众城'],'观澜':['汽车车站','富士康']}}, 8 '菏泽':{'牡丹区':{'三角花园':['东方广场','牡丹园'],'东区':['火车站','瓜子长']}, 9 '巨野县':{'巨野镇':['师范','永丰'],'柳林镇':['一中学','胜利村']}, 10 '新区城区':{'定陶':['万福河','机场'],'沙土集':['食品厂','沙土城']}}, 11 '青岛':{'崂山区':{'五四大街':['五四广场','海边捞'],'崂山镇':['啤酒广场','农配市场']}, 12 '黄岛区':{'黄岛弯':['海滩广场','发电厂'],'开发街':['汽车站','大学城']}, 13 '市北区':{'渔场':['批发市场','天然养殖'],'啤酒厂':['供水站','压花站']}}, 14 '武汉':{'汉阳区':{'五里墩':['五里墩街道办','汉阳大道385号'],'江汉二桥':['摆渡','靶场']}, 15 '武昌区':{'杨园':['街道办','永发厂'],'积玉桥':['肯德基','玉桥城']}, 16 '江汉区':{'林业厂':['中山公园','解放公园'],'大湖城':['西湖','东湖']}}, 17 '广州':{'黄埔区':{'南海神庙':['庙会站','牌坊'],'黄埔军校':['旧址','旅游路']}, 18 '越秀区':{'洪桥':['洪桥小学','洪桥餐馆'],'东风':['东风路','东风街道']}, 19 '天河区':{'新塘':['信盈城','大丰大厦'],'猎德':['海风路','广西银行']}}, 20 } 21 bj = 1 #定义一个标签 22 while True: #使用while循环!!! 23 if bj == 0: #判断标签值 与相等时退出 24 break 25 for cy in enumerate(f_city.keys()): #打印第一层城市(循环出来)用enumerate来标记数字次序 26 print("%s:%s" %cy) #依照数字方式打印城市 27 print('选择q退出当前窗口!!!') #提示用户退出选择 28 s_numb = input('请输入选择:').strip() #提示输出框 29 s_numbs = s_numb.isdigit() #值得判断结果给于定义 30 if s_numb == 'q': #判断为q时 31 print('你选在了退出') #打印提示符 32 break #跳出循环 33 elif s_numb == '' or s_numbs == False: #and int(s_numb) :#为空时或非数字时 34 print('输入错误!!!') 35 continue #跳出本次循环 36 elif int(s_numb) >= len(f_city.keys()): #当输入的值大于或等于对列数量(城市数量)时打印下面的信息并退出本次循环 37 print('选在错误请在有效范围内选择') 38 continue 39 else: #以上条件都不满足时候 40 num = int(s_numb) #转换输入的内容为数字 41 mm = list(f_city.keys()) #转换列表 42 print(mm[num]) #打印出城市 43 44 while True: # 使用while循环 做二次循环!!! 45 if bj == 0: # 判断标签值 与相等时退出 46 break 47 for aa in enumerate(f_city[mm[num]].keys()):# 打印二级城市或区,用enumerate来标记数字次序 48 print("%s;%s" %aa) 49 print("q退出,b返回上一级") #提示选择 50 ss_numb = input('请选择:').strip() #让其输入选择 strip()内容去除空格 51 ss_numbs = ss_numb.isdigit() # 值得判断结果给于定义 52 if ss_numb == 'q': #选择q 打印下面的东西并退出本次循环 53 print('选择了退出!') 54 bj = 0 # 等一标签值 55 break 56 elif ss_numb == 'b': #选择b打印返回上级 57 print("返回上级菜单") 58 break #退出本次循环 59 elif ss_numb == ''or ss_numbs == False : #判断为空时 60 print("输入错误!!!") 61 continue 62 elif int(ss_numb) >= len(f_city[mm[num]].keys()): # 输入大于数量时 63 print("超出选择范围") 64 continue 65 else: 66 numm = int(ss_numb) #转换输入变量 67 mmm = list(f_city[mm[num]].keys()) #转换列表 68 print(mm[num],">>",mmm[numm]) #列出结果 69 70 while True: # 使用while循环 做二次循环!!! 71 if bj == 0: # 判断标签值 与相等时退出 72 break 73 for st in enumerate(f_city[mm[num]][mmm[numm]].keys()): 74 print("%s;%s" %st) 75 print("q退出,b返回上一级") 76 sss_numb = input('请选择:').strip() 77 sss_numbs = sss_numb.isdigit() # 值得判断结果给于定义 78 if sss_numb == 'q': 79 print('选择了退出!') 80 bj = 0 # 等一标签值 81 break 82 elif sss_numb == 'b': 83 print("返回上级菜单") 84 break # 退出本次循环 85 elif sss_numb == ''or sss_numbs == False: 86 print("输入错误!!!") 87 continue 88 elif int(sss_numb) >= len(f_city[mm[num]][mmm[numm]].keys()): 89 print("超出选择范围") 90 continue 91 else: 92 nummm = int(sss_numb) 93 mmmm = list(f_city[mm[num]][mmm[numm]].keys()) 94 print(mm[num],">>",mmm[numm],">>>",mmmm[nummm]) 95 print(" >>>>>",f_city[mm[num]][mmm[numm]][mmmm[nummm]]) 96 sys.exit()

浙公网安备 33010602011771号