Python3学习笔记3:N级菜单的实现,列表(list)、字典(dict)的使用

今天是学习Python3的第二天,坚持每一次学习都有一点点知识的积累,瞄准机器学习、深度学习技术的终极目标gogogo!这次先从练手开始(题目源自老男孩)

N级菜单:

  简单实现N级菜单,能够退出、退回上一层;

  菜单的实现,不能限制菜单的级别,要求支持N级菜单,根据菜单深度需求自适应。

先上代码:

#Author wsp
menu = {
    '首页': {
        '大屏页': {
            '折线图': {
                '折线图1': {},
                '折线图2': {},
                '折线图3': {}
            },
            '视频监控': {
                '视频1': {},
                '视频2': {},
                '视频3': {},
            },
            '饼图': {
                '饼图1': {},
            },
        },
        '地图': {
            '百度地图': {
                '风场': {},
                '配电室': {},
            },
            '模块地图': {},
            '模拟地图': {},
        },
        '统计': {},
        '预测': {},
    },
    '告警信息': {
        '历史告警': {
            "告警查询": {
                '模糊搜索': {}
            }
        },
        '实时告警': {
            '告警处理': {
                '告警分析': {}
            }
        },
        '告警统计': {},
    },
    '监视': {},
}
##当前选择菜单
current_menu = menu
##选择记录的追踪列表
choice_list = [menu]

while True:
    for me in current_menu:
        print("->{listname}".format(listname=me))
    choice = input("选择当级菜单(输入'b'为返回上一级,输入e''为退出程序)->")
    if choice == 'b':
        #[-1]代表选取列表的最后一个元素,这里代表选择上一级菜单
        current_menu = choice_list[-1]
        #选择完上一级菜单之后,菜单选择列表弹出最后一个元素,代表回退
        choice_list.pop()
    elif choice == 'e':
        print("退出菜单选择,谢谢使用")
        break
    elif not current_menu.__contains__(choice):
        continue
    else:
        choice_list.append(current_menu)
        current_menu = current_menu[choice]

在本例中使用了两个重要的存储数据的工具:列表(list)、字典(dict)

  其中menu的装载使用了字典与列表的复合结构,上级菜单与下级菜单的结构是字典结构,同级菜单是列表中的元素;

  选择记录的追踪使用了列表进行存储。

知识点:

  dict字典:key-value的数据结构体,类似于Java中的map,本例中除了构造之外还是用了两个操作方法:

#判定是否存在choice为key的数据
current_menu.__contains__(choice)
#获取key为数据的value,本例中也就是对应的子节点咯。
current_menu[choice]

  list列表:列表存储结构体,和Java中的列表类似,本例中的使用如下:

#获取元素,重要的是-1代表最后一个元素
choice_list[-1]
#弹出最后一个元素
choice_list.pop()

由此拓展:python中[-1]、[:-1]、[::-1]、[n::-1]使用方法,以下借鉴:https://blog.csdn.net/qq_21840201/article/details/85084621

import numpy as np
a=np.random.rand(5)
print(a)
[ 0.64061262  0.8451399   0.965673    0.89256687  0.48518743]
 
print(a[-1]) ###取最后一个元素
[0.48518743]
 
print(a[:-1])  ### 除了最后一个取全部
[ 0.64061262  0.8451399   0.965673    0.89256687]
 
print(a[::-1]) ### 取从后向前(相反)的元素
[ 0.48518743  0.89256687  0.965673    0.8451399   0.64061262]
 
print(a[2::-1]) ### 取从下标为2的元素翻转读取
[ 0.965673  0.8451399   0.64061262]

OK,机器学习、深度学习技术我离你更近啦,等我先学完Python基础!

对Python有兴趣的朋友可以留言相互学习相互进步,加油!祝福浏览文章的每位朋友!

posted @ 2021-04-20 21:10  小时候的风和阳光  阅读(171)  评论(0编辑  收藏  举报