python day1 之三级菜单的正确姿势
看了几个同学有关三级菜单的实现,都是通过一级一级输出,是较为过程的实现。另外如果菜单(树形结构)更多级这样处理起来就比较麻烦了。
可以使用python强大的列表和字典,实现的更优美或简洁一些:

注:复制代码需谨慎,如有错误自行修正
#!/usr/bin/env python
#Author:windtalker_cs
menus = {'root':['shandong','jiangsu'],
'shandong':['sc1','sc2','sc3'],
'jiangsu':['jc1','jc2'],
'sc1':['sc1t1','sc1t2'],
'sc2':['sc2t1','sc2t2','sc2t3'],
'sc3':['sc3t1'],
'jc1':['jc1t1','jc1t2'],
'jc2':['jc2t1']} #定义出合理的树形结构,决定了处理的效率和扩展性,可以定义N级菜单
print('-'*15,'多级菜单展示样例程序','-'*15,
'''
正确输入:
1)菜单名
2)q:退出
3)b:回退到上级菜单的列表
''',
'-' * 15, '***************', '-' * 15) menu_path = [menus['root']]#记录菜单访问的路径,并初始化第一级菜单
input_path=[]#预留功能扩展用,变更记录菜单选择项 print('''
第1级菜单:
{_list}
'''.format(_list = menu_path[0])) while True:
input_key = input('input your choice or option:') if input_key == 'q':
break
elif input_key in menu_path[-1] and input_key in menus.keys():#如果输入为当前级别菜单名且具有下一级菜单
input_path.append(input_key)
menu_path.append(menus[input_key])#记录新菜单访问路径
print('''
第{_n}级菜单:
{_list}
'''.format(_n=len(menu_path),_list=menu_path[-1]))
elif input_key == 'b' and len(menu_path) > 1:
input_path.pop()
menu_path.pop()#回退
print('''
第{_n}级菜单:
{_list}
'''.format(_n=len(menu_path), _list=menu_path[-1]))
else:
print('your input is wrong! (can not "back" or "forward" or "error input")')
print('''
第{_n}级菜单:
{_list}
'''.format(_n=len(menu_path), _list=menu_path[-1]))
python day1 之三级菜单的正确姿势的更多相关文章
- python练习_三级菜单
python练习_三级菜单 需求: 做一个地区查询三级菜单,输入一级能够打印下一级 在第三级个第二级输入e可以返回上一级 在任意一级输入q则退出程序 以下代码实现的功能与思路: 功能: (1)通过In ...
- (转)Python字典实现三级菜单
Python字典实现三级菜单 原文:https://www.cnblogs.com/pyramid1001/p/5803294.html 1 ############################# ...
- Python学习之三级菜单
Python经典练习题 - 三级菜单 需求: 可依次选择进入各子菜单 可从任意一层往回退到上一层 可从任意一层退出程序 示例代码: # -*- coding: utf-8 -*- menu = { ' ...
- Python创建二维列表的正确姿势
Python创建二维列表的正确姿势 简介 Python中没有数组,使用list结构代替,并且list结构的功能更加强大: 支持动态扩容,无需担心元素过量 对list内的元素类型不做一致性约束 提供丰富 ...
- day1作业--三级菜单
作业概述: 写一个三级菜单 实现如下功能: (1)可依次选择进入各子菜单 (2)在每一级按“b”都可以返回上一级,按“q"都可以退出 流程图: readme: 简介: three_menu. ...
- python 购物车和三级菜单
程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 ...
- python作业:三级菜单(第一周)
一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二.三级菜单 ...
- 剖析和解决Python中网络粘包的正确姿势
目录 1.粘包及其成因 1.1.粘包产生 1.2.粘包产生的原因 2.尝试解决粘包 2.1.指定数据包的长度 2.2.固定数据包的长度 2.3.用函数实现多次调用发送数据 3.解决粘包问题的正确姿势 ...
- Python字典实现三级菜单
################################################ # Task Name: 三级菜单 # # Description:打印省.市.县三级菜单 # # 可 ...
随机推荐
- Linux常用的基础命令总结
man 查看英文命令帮助 可以看作--help 拷贝目录的命令cp -a 包含所有 ls -a 显示所有文件包括隐藏文件 -ld ls -F 过滤目录文件(给不同类型文件结尾加上不同的符号) ...
- 向日葵连CentOS
TeamViewer可以连CentOS,但TeamViewer最近老是提示“检测为商业用途”,5分钟就会自动断,用起来非常不爽,所以决定改用向日葵试下,向日葵目前的口碑也不错,更何况是国产软件,更要支 ...
- 后端必备的Linux知识
目录 从认识操作系统开始 操作系统简介 操作系统简单分类 初探Linux Linux简介 Linux诞生简介 Linux的分类 Linux文件系统概览 Linux文件系统简介 文件类型与目录结构 Li ...
- JSESSIONID的简单说明
原文地址:http://blog.csdn.net/chunqiuwei/article/details/23461995 1)第一次访问服务器的时候,会在响应头里面看到Set-Cookie信息(只有 ...
- Android中自定义广播的实现
今天尝试了自定义的广播,说是自定义的广播其实质就是自己编写一个类继承broadcastreceiver类,然后再onreceiver方法中实现某些功能,在这个过程中我们可以自定义我们要发出的广播,可以 ...
- Java基础学习-类型转换之隐式转换
+是一个运算符,我们应该能够看懂,做数据的加法. boolean类型不能转换为其他的数据类型. 默认转换: byte,short,char--int--float--double by ...
- ES6 let const学习
1.let命令:用法类似于var,但是所声明的变量,只在let命令所在的代码块有效. 例:var a = [ ]; for(var i=0;i<10;i++){ a[ i ] = functio ...
- HTML有哪些标签?html常用标签大全
html中标签有很多,每一种标签都有着不同的用处,下面这篇文章php中文网给大家总结html常用的标签,每一种标签都会跟随一个例子,话不多说,让我们来看看具体内容.<font>字体标签,用 ...
- h5 ios键盘卡死页面
失去焦点以后重新设置页面顶部位置 $('input,textarea').on('blur',function(){ window.scroll(0,0); }); $('select').on('c ...
- js原生实现网页广告条飞舞的效果
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...