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

可以使用python强大的列表和字典,实现的更优美或简洁一些:

注:复制代码需谨慎,如有错误自行修正

  1. #!/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)
  2.  
  3. menu_path = [menus['root']]#记录菜单访问的路径,并初始化第一级菜单
    input_path=[]#预留功能扩展用,变更记录菜单选择项
  4.  
  5. print('''
    第1级菜单:
    {_list}
    '''.format(_list = menu_path[0]))
  6.  
  7. while True:
    input_key = input('input your choice or option:')
  8.  
  9. 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. Java 数据返回接口封装

    enum StatusCode package com.lee.utils; public enum StatusCode { SUCCESS(20000, "成功"), FALL ...

  2. new Date().getTime()和System.currentTimeMillis()的区别

    在Java中,new Date().getTime()和System.currentTimeMillis()都是用来获取当前时间的,并可以用DateFormat转成对应的时间格式,代码如下. impo ...

  3. css 修改input中placeholder提示问题颜色

    input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: rgba(74, 87, 103, 1); ...

  4. bash 和sed 和gawk

    bash内建命令 命令描述 : 扩展参数列表,执行重定向操作 . 读取并执行指定文件中的命令(在当前shell环境中) alias 为指定命令定义一个别名 bg 将作业以后台模式运行 bind 将键盘 ...

  5. SQL语句基本语法总结

    SQL语句基本语法 表的创建.修改.删除: 表中数据的增加.修改.删除.查看: SQL的 语法.数据类型.约束.删除表中数据(2种方法).语句查询的执行顺序: 查询 单列.多列.全部 子查询 单行子查 ...

  6. 详解docker中容器devicemapper设备的挂载流程

    事故起因 版本说明:本文中docker版本主要基于1.10版本,操作系统为centos7.devicemapper在文中缩写为dm. 某个用户的容器启动不起来,启动时候一直报错.通过docker lo ...

  7. ADO.Net的发展史

    1.演变历史: 它们是按照这个时间先后的顺序逐步出现的,史前->ODBC->OLEDB->ADO->ADO.Net. 2.下面分别介绍一下这几个. a. 史前的数据访问是什么样 ...

  8. robot framework---校验新增条数功能

    check总条数验证 [Arguments] ${beforevalue} ${endvalue} ${value} ${a} Evaluate '${beforevalue}'.replace('共 ...

  9. Vue-admin工作整理(十五):Ajax-跨域问题

    跨域的定义: 解决方法: 1.前端通过配置来解决跨域问题:自定义的vue.config.js配置文件来进行跨域处理:就是只要存在跨域现象 都会代理到一个指定的地址上 devServer: { prox ...

  10. 关于python中loc和iloc方法

    pandas以类似字典的方式来获取某一列的值 import pandas as pd import numpy as np table = pd.DataFrame(np.zeros((4,2)), ...