三级菜单作业改正

时间:2022-01-12 21:56:40

上个三级菜单写的代码长而且还不实用,因此我苦思冥想如何用一个循环,以及少量代码实现强大的功能,

而且还是第一个循环永远走不到头,当有多少个菜单等级的时候就要写好多个循环

简单来说写的程序基本上就是没用

所以啊,还是要想出来另一中解决办法啊,

然后突然我想起来一种写法,

思想就是:一次while要完成两个判断,一、判断是否要进入下一级,是,则结束本次循环,并且在下一次循环的时候打印进入的下一级。

                 二、判断是否要返回上一级,是,则结束本次循环,并且在下一次循环的时候打印返回的上一级。

 

再然代码草草的写出来大概是这个样子的

 

三级菜单作业改正

 

我就测试两下发现可以哎

当时我就高兴坏了,这么简单的么,十多行就够了,然后我就迫不及待的找导师要让他看,刚发给老师我就觉得有点不对劲,然后不放心的我又去检验了一下,

唉,我就知道没有那么简单,目前这个代码只能实现返回上面的一级,再返回上上一级就不行了

那就在想办法呗,忽然我就又想到一个点子,既然能返回上一级那是因为我只定义了一个menu2=menu用来保存上一级的信息,如果我用多个menu2、menu3.....等等循环一次保存一次,

再然后再输return返回的时候回就可以一直往上返回了,但是问题来了,怎么才能在循环里面有规律的每循环一次产生一个变量保存上一级的菜单,我查了一下网上的教程发现并没有这种方法

唉,希望知道这种方法的大佬能够告诉一下,万分感谢

那么,代码还是要写的,但现在就差最后一步了,看来不用老师给说的用列表是不行了,本来还想自己写一个不用列表的,代码还少的让老师看一下呢,看来不行了

用列表的话思想给我上面说的差不多就是要将上一级以及上上一级一直到第一既都要保存下来,就是保存到列表里,然后当判断输入return的时候就从列表里找那个上一级就了,

其他具体的我也没写,比如当输入又误的时候怎么办,我在第一次的程序里写了这里就不加了

还是要附上代码

#数据结构:
'''需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典'''
menu = {
    '北京':{
        '海淀':{
            '五道口':{
                'soho':{},
                '网易':{},
                'google':{}
            },
            '中关村':{
                '爱奇艺':{},
                '汽车之家':{},
                'youku':{},
            },
            '上地':{
                '百度':{},
            },
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '北航':{},
            },
            '天通苑':{},
            '回龙观':{},
        },
        '朝阳':{},
        '东城':{},
    },
    '上海':{
        '闵行':{
            "人民广场":{
                '炸鸡店':{}
            }
        },
        '闸北':{
            '火车战':{
                '携程':{}
            }
        },
        '浦东':{},
    },
    '山东':{},
}
list=[]
while(True):            # True要用大写,区别于其他语言
    for i in menu:
        print(i)
    choice=input(">>")          #目前只实现了一级一级往下,但是实现不了返回上一级
    if choice in menu:          #如何才能循环产生多个变量?
        list.append(menu)
        menu=menu[choice]
    if choice=="return":
        menu=list[-1]          #应该熟悉列表的位置信息以及如何按照规律拿出来列表里的值
        del list[-1]

 

看着最后实现大体功能也就用了11行代码,还是有点小骄傲的,毕竟是自己想出来的,虽说给了一些提示呗但是还好吧,我自己还是想了许多呢。

又到半夜12点多了,差不多天天都要熬夜,有点不好,写代码这个东西只要一开始,不知不觉中几个小时就过去了.....