打印省、市、县三级菜单

可返回上一级

可随时退出程序

用递归实现:menu = {'北京': {'海淀': {'五道口': {'soho': {},'网易': {},'google': {}},'中关村': {'爱奇艺': {},'汽车之家': {},'youku': {},},'上地': {'百度': {},},},'昌平': {'沙河': {'老男孩': {},'北航': {},},'天通苑': {},'回龙观': {},},'朝阳': {},'东城': {},},'上海': {'闵行': {"人民广场": {'炸鸡店': {}}},'闸北': {'火车战': {'携程': {}}},'浦东': {},},'山东': {},
}
def threeMenu(dic):while 1:for k in dic:print(k)key = input('输入城市(按b返回上一层,按q退出):')if key == 'b' or key == 'q': return keyelif key in dic.keys() and dic[key]:ret = threeMenu(dic[key])if ret == 'q': return retelif (not dic.get(key)) or (not dic[key]):continue

-

用堆栈实现
menu = {'北京': {'海淀': {'五道口': {'soho': {},'网易': {},'google': {}},'中关村': {'爱奇艺': {},'汽车之家': {},'youku': {},},'上地': {'百度': {},},},'昌平': {'沙河': {'老男孩': {},'北航': {},},'天通苑': {},'回龙观': {},},'朝阳': {},'东城': {},},'上海': {'闵行': {"人民广场": {'炸鸡店': {}}},'闸北': {'火车战': {'携程': {}}},'浦东': {},},'山东': {},
}l = [menu]
while l:for k in l[-1]:print(k)key = input('输入城市(按b返回上一层,按q退出):')if key in l[-1].keys() and l[-1][key]:l.append(l[-1][key])elif key == 'b':l.pop()elif key == 'q':breakelse:continue

#!/user/bin/env python
#-*-coding:utf-8 -*-
#Author: qinjiaxi
'''需求:
1.设计一个三级菜单
2.在任意时候可以返回上级菜单
3.在任何一级菜单里面可以随时退出程序思路:设计一个嵌套字典用于存储菜单内容--->利用嵌套循环打印每一级的内容--->然后判断输入条件根据输入条件选择是否退出和返回上级
'''
data = {"武汉":{"光谷":{"关山":['文华','华科','湖科']},"江夏":{"郊外":['湖经','楚天','纺大']}},"北京":{'朝阳':{'a':[1,2,3]}},"上海":{"市内":{'b':[2,3,4]}}
}
print(data)
exit_flag = False#设置一个退出标志
while not exit_flag:for i in data:print(i)#第一层choice = input('选择进入1>>>:')if choice in data:while not exit_flag:for i2 in data[choice]:print('\t', i2)#第二层choice2 = input('选择进入2>>>:')if choice2 in data[choice]:while not exit_flag:for i3 in data[choice][choice2]:print('\t\t', i3)#第三层choice3 = input('选择进入3>>>:')if choice3 in data[choice][choice2]:for i4 in data[choice][choice2][choice3]:print('\t\t', i4)choice4 = input('最后一层,按b返回>>>:')if choice4 == 'b':passelif choice4 == 'q':exit_flag = Trueif choice3 == 'b':breakelif choice3 == 'q':exit_flag = Trueif choice2 == 'b':breakelif choice2 == 'q':exit_flag = Trueelif choice == 'q':exit_flag = True

-

# _author : Ahern Li
# @_date : 2017/9/12

menu = {'浙江省':{'杭州市':{'余杭区':{'中泰':{},'临平':{}},'西湖区':{'西湖':{},'留下':{}}},'温州市':{'苍南县':{'灵溪':{},'龙港':{}},'瑞安县':{'安阳':{},'锦湖':{}}}},'广东省':{'广州市':{'越秀区':{'人民路':{},'北京路':{}},'荔湾区':{'沙面':{},'龙津':{}}},'珠海市':{'香洲区':{'拱北':{},'吉大':{}},'金湾区':{'红旗镇':{},'平沙镇':{}}}}}# 返回标记
q_flag = True
# 退出标记
Q_flag = True
# 返回,退出标记出现False退出循环
while q_flag and Q_flag:# 遍历打印省份for i in menu:print(i)province = input('请输入要查找的省份(Q,退出):').strip()if province in menu:while q_flag and Q_flag:for i in menu[province]:print(i)city = input('请输入要查找的市(q,返回 或 Q,退出):').strip()if city in menu[province]:while q_flag and Q_flag:for i in menu[province][city]:print(i)county = input('请输入要查找的区或县(q,返回 或 Q,退出):').strip()if county in menu[province][city]:while q_flag and Q_flag:for i in menu[province][city][county]:print(i)# 提示最后一页,输入格式choice = input('最后一页! q,返回 或 Q,退出:').strip()if choice == 'q':# 配合 else: q_flag = True 退出该层循环,返回上层循环q_flag = Falseelif choice == 'Q':# 退出大循环Q_flag = Falseelse:# 提示输入不合法print('输入错误!')# 改回 q_flag 的值,实现只退出一层循环else:q_flag = Trueelif county == 'q':q_flag = Falseelif county == 'Q':Q_flag = Falseelse:print('输入错误!')else:q_flag = Trueelif city == 'q':q_flag = Falseelif city == 'Q':Q_flag = Falseelse:print('输入错误!')else:q_flag = Trueelif province == 'Q':Q_flag = Falseelse:print('输入错误!')

-

# _author : Ahern Li
# @_date : 2017/9/12

menu = {'浙江省':{'杭州市':{'余杭区':{'中泰':{},'临平':{}},'西湖区':{'西湖':{},'留下':{}}},'温州市':{'苍南县':{'灵溪':{},'龙港':{}},'瑞安县':{'安阳':{},'锦湖':{}}}},'广东省':{'广州市':{'越秀区':{'人民路':{},'北京路':{}},'荔湾区':{'沙面':{},'龙津':{}}},'珠海市':{'香洲区':{'拱北':{},'吉大':{}},'金湾区':{'红旗镇':{},'平沙镇':{}}}}}current_layer = menu  # 实现动态循环
parent_layer = []  # 保留所有父层,最后一个元素永远为父层while True:print() # 仅为了打印美观for i in current_layer:   # 遍历打印地址print(i)choice = input('请在下方输入查询地址\n>>>:').strip()if choice in current_layer:if current_layer[choice]:  # 判断是否为末层parent_layer.append(current_layer) # 进入子层前,添加当前层作为父层current_layer = current_layer[choice]  # 修改子层else:print('当前是最后一页')elif choice == '':continueelif choice == 'q':   # 返回上层if parent_layer:  # 判断 parent_layer 是否为空current_layer = parent_layer.pop() # 取出当前层父层# 退出循环elif choice == 'Q':breakelse:print('输入错误!')

转载于:https://www.cnblogs.com/dongye95/p/10193479.html

Python练习_三级菜单相关推荐

  1. 三级菜单页面布局_三级菜单的最快导航布局

    三级菜单页面布局 重点 (Top highlight) When users navigate an interface, there's a need for speed. The faster i ...

  2. python实现一个三级菜单

    要求 1.可以一层一层的进入到所有层 2.可以在每一层返回上一层 3.可以在任意层退回主菜单 '''^....0^ .1 ^1^.. 011.^ 1.0^ 1 ^ ^0.11 ^ ^..^0. ^ 0 ...

  3. python入门之玩转列表我的菜单_我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)...

    #!/usr/bin/env python3#coding:utf-8 '''Created on: 2015年12月30日 @author: 张晓宇 Email: 61411916@qq.com V ...

  4. python做菜单_python实现三级菜单

    #要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 #!/usr/bin/python #_*_coding:utf-8_*_ map_menu = { '河北省':{ '石家庄市':[' ...

  5. python三级菜单_python三级菜单

    需求:编写三级菜单 1.菜单需求: 一级菜单:            北京                                  山西 二级菜单:    朝阳                ...

  6. python三级菜单设计题目_Python三级菜单

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 三级菜单:打印省.市.县三级菜单. 可返回上一级,可随时退出程序首先准备基础数据 ...

  7. 新手小白 python之路 Day1 (三级菜单功能实现)

    直接上需求: 实现一个多级菜单 三级菜单的实现 可以依次选择进入各个子菜单 也可以返回上级菜单 所需知识 列表 字典 需求也比较简单,但实际上做起来还是遇到许多的问题,我这边主要用到的知识点大概就是 ...

  8. python编写登录接口与三级菜单小程序

    一:登录接口 编写思路 python登录接口登录三次失败锁定: 一:建一个数据库文件保存用户名和密码,用来判断用户是否存在 二:用户锁定文件,当用户登录三次错误后记录用户信息进入锁定文件,下次登录时就 ...

  9. python自动化办公都能做什么菜-Python自动化开发学习之三级菜单制作

    本文实例为大家分享了Python三级菜单展示的具体代码,供大家参考,具体内容如下 作业需求: (1)运行程序输出第一级菜单 (2)选择一级菜单某项,输出二级菜单,同理输出三级菜单 (3)让用户选择是否 ...

最新文章

  1. c++语言static作用,详解c++中的 static 关键字及作用
  2. java 类加载过程
  3. win7 CapsLooks键 转换成Ctrl键
  4. poj 2342 树形DP
  5. 异常是catch还是throws的简单原则
  6. es6 初级之箭头函数
  7. pytorch torch.nn.Embedding
  8. B,KB,MB,GB之间换算
  9. php后台管理修改密码,重置网站后台管理员密码
  10. 微信小程序navigate标签
  11. Linux文件---文件锁
  12. matlab mafdr,matlab FDR校正
  13. 自定义View的OnMeasure问题
  14. SSL基础:20:使用x509子命令为其他证书签名
  15. dns随笔(部分转载)
  16. MySQL查询时不加order by的时候默认排序规则是什么?
  17. struts2标签的使用(一)
  18. VS Code 引入pthread.h头文件
  19. MFC-个人所得税计算器
  20. 移动web 空间转换 3D

热门文章

  1. codeforces 1016C - Vasya And The Mushrooms 【构造 + 思维】
  2. 洛谷 P1064 金明的预算方案
  3. rewirte 规则
  4. WebStorm V2017.1版用于Angular2开发的环境设置
  5. 关于年终奖励的扣税算法BUG
  6. VS Code插件之Cordova Tools
  7. BZOJ3993: [SDOI2015]星际战争
  8. 快速排序算法的实现 随机生成区间里的数 O(n)找第k小 O(nlogk)找前k大...
  9. 南邮CTF密码学write up
  10. DataGridView控件内建立日期选择编辑列