Python无限嵌套多级菜单

无限嵌套菜单很费脑,分享一下思路
b的作用是在用户进入下级目录,把a放到b里面,然后把a[c]复制到当前的a,代表进入下级目录

  1. 打印a的keys
  2. 判断用户输入是不是‘back’,如果是‘back’
    • 判断上级目录列表是否为空
      • 如果为空就代表当前所在位置是根目录,执行break语句
      • 如果上级目录不为空,则代表当前所在位置不是根目录,把b里面的最后一个元素复制到a,代表返回上级目录,删除b里面的最后一个元素,代表已经退出上级目录
  3. 如果用户输入的内容不在a里面,直接进入下一次输入
  4. 如果上面的判断条件都不成立,则执行进入下级菜单操作,把当前的菜单保存到b,把a改成用户行选择的菜单,然后进入下一循环

#!/bin/python3
# -*- coding:utf-8 -*-

#var
a = {
    '你的爷爷':{
        '你的爸爸':{
            '你的孙子':{
            }
        },
        '你的野爹':{
        }
    },
    '你的祖母':{
        '你的曾祖母':{
            '你的曾曾祖母':{
            }
        }
    }
}
b = [] #存储上级目录
d = [] #存储当前所在位置
def get_location(list): #获取当前位置,格式”你的爷爷>你的爸爸>“
    string = "" #初始化字符串
    if list: #假如list里面有内容
        for x in list: #从传入的list里面遍历
            string += "%s>" %x #不断累加list
        return string #结束遍历后返回
    else:
        return ">" #返回根目录字符
while True:
    for x in a.keys(): #遍历当前菜单
        print(x)
    c = input("%s"%get_location(d)) #请求用户输入
    if c == 'b': #假如用户输入b,返回上级菜单操作
        if not b: #如果上集目录变量为空
            break #退出程序
        a = b[-1] #将上级目录赋值到当前目录
        b.pop() #删除上级目录列表里面最后一个元素
        d.pop() #删除当前所在位置的最后一个元素
    if c not in a: #如果输入的内容不再当前菜单里面,则直接进入下一循环
        continue
    #如果输入的内容符合当前菜单的内容
    b.append(a) #将当前目录存储到上级目录的变量里面
    a = a[c] #将当前菜单改成用户选择的菜单
    d.append(c) #把用户选择的位置存储到d里面

One thought on “Python无限嵌套多级菜单”

Leave a Reply

Your email address will not be published. Required fields are marked *