看了几个同学有关三级菜单的实现,都是通过一级一级输出,是较为过程的实现。另外如果菜单(树形结构)更多级这样处理起来就比较麻烦了。

可以使用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 之三级菜单的正确姿势的更多相关文章

  1. python练习_三级菜单

    python练习_三级菜单 需求: 做一个地区查询三级菜单,输入一级能够打印下一级 在第三级个第二级输入e可以返回上一级 在任意一级输入q则退出程序 以下代码实现的功能与思路: 功能: (1)通过In ...

  2. (转)Python字典实现三级菜单

    Python字典实现三级菜单 原文:https://www.cnblogs.com/pyramid1001/p/5803294.html 1 ############################# ...

  3. Python学习之三级菜单

    Python经典练习题 - 三级菜单 需求: 可依次选择进入各子菜单 可从任意一层往回退到上一层 可从任意一层退出程序 示例代码: # -*- coding: utf-8 -*- menu = { ' ...

  4. Python创建二维列表的正确姿势

    Python创建二维列表的正确姿势 简介 Python中没有数组,使用list结构代替,并且list结构的功能更加强大: 支持动态扩容,无需担心元素过量 对list内的元素类型不做一致性约束 提供丰富 ...

  5. day1作业--三级菜单

    作业概述: 写一个三级菜单 实现如下功能: (1)可依次选择进入各子菜单 (2)在每一级按“b”都可以返回上一级,按“q"都可以退出 流程图: readme: 简介: three_menu. ...

  6. python 购物车和三级菜单

    程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 ...

  7. python作业:三级菜单(第一周)

    一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二.三级菜单 ...

  8. 剖析和解决Python中网络粘包的正确姿势

    目录 1.粘包及其成因 1.1.粘包产生 1.2.粘包产生的原因 2.尝试解决粘包 2.1.指定数据包的长度 2.2.固定数据包的长度 2.3.用函数实现多次调用发送数据 3.解决粘包问题的正确姿势 ...

  9. Python字典实现三级菜单

    ################################################ # Task Name: 三级菜单 # # Description:打印省.市.县三级菜单 # # 可 ...

随机推荐

  1. SpringBoot 项目打包分开lib,配置和资源文件

    原文地址:https://blog.csdn.net/u012811805/article/details/80878848 1 jar启动分离依赖lib和配置 先前发布boot项目的时候,改动一点东 ...

  2. Pandas:深市股票代码前补足0

    #深市代码前补充0----------------- df[' #先增加一列 #将2列合并为新列 df['代码合并'] = df['补充'] + df['股票代码'] #再取后6位 df['股票代码' ...

  3. GitHub 常用的几条命令

    初始化仓库 git init 下载仓库 git clone 仓库地址 将所有违背跟踪的文件添加到本地仓库 git add . 查看状态 git status 执行提交 git commit -m pr ...

  4. EECS 649 Introduction to Artificial Intelligence

    EECS 649 Introduction to Artificial IntelligenceExamElectronic Blackboard Submission Due: April 24, ...

  5. Oracle 12c 单实例安装

    准备工作 实验环境:Redhat 6.6   Oracle 12c 12.2.0.1 1.官网下载 https://www.oracle.com/technetwork/database/enterp ...

  6. 移动端开发注意事项——meta、rem以及弹性盒

    移动端开发注意事项——meta.rem以及弹性盒 随着人们对移动端的依赖程度的增强,前端开发对移动端的需求也越来越强烈.那么,在移动端开发中,有哪些事项是需要注意的呢? meta标签 在常规的pc端开 ...

  7. The dependency `XXX` is not used in any concrete target.

    1.在新建项目,引入CocoaPod时,当创建了podfile文件后,执行pod install时报一下错误   2.这是因为 这个第三方不知道用于哪个target,所以必须指定target 解决方案 ...

  8. ArrayList迭代器源码分析

    集合的遍历 Java集合框架中容器有很多种类,如下图中: 对于有索引的List集合可以通过for循环遍历集合: List<String> list = new ArrayList<& ...

  9. gradle project sync failed.please fix your project and try again-Android Studio3.1.2运行出错

    原因: 修改了工程中MainActivity.java和app文件夹下的代码后运行不了. 解决办法: 关闭Android Studio,然后再重新启动,它会再次构建gradle.

  10. krpano生成全景图

    1.下载krpano工具 第一次我下载的有水印,但是第二次下载的便没了,原因我也不清楚.下载好后不要急着打开.exe程序 2.生成全景图 将全景图拖入MAKE VTUOR (NORMAL) DROPL ...