1. 程式人生 > >三級菜單作業

三級菜單作業

列表 理解 菜單 作業 往回 自己 第一次 google 打破

作業需求:

數據結構:

menu = {
    ‘北京‘:{
        ‘海澱‘:{
            ‘五道口‘:{
                ‘soho‘:{},
                ‘網易‘:{},
                ‘google‘:{}
            },
            ‘中關村‘:{
                ‘愛奇藝‘:{},
                ‘汽車之家‘:{},
                ‘youku‘:{},
            },
            ‘上地‘:{
                ‘百度‘:{},
            },
        },
        ‘昌平‘:{
            ‘沙河‘:{
                ‘老男孩‘:{},
                ‘北航‘:{},
            },
            ‘天通苑‘:{},
            ‘回龍觀‘:{},
        },
        ‘朝陽‘:{},
        ‘東城‘:{},
    },
    ‘上海‘:{
        ‘閔行‘:{
            "人民廣場":{
                ‘炸雞店‘:{}
            }
        },
        ‘閘北‘:{
            ‘火車戰‘:{
                ‘攜程‘:{}
            }
        },
        ‘浦東‘:{},
    },
    ‘山東‘:{},
}

需求:
可依次選擇進入各子菜單
可從任意一層往回退到上一層
可從任意一層退出程序
所需新知識點:列表、字典

本來覺得三級菜單是有點難度的,想不到從哪裏下手,但是後來仔細想了一下還是沒有思路,那就直接寫,
然後第一次寫出來的用了一個while循環只能一級一級的往下去不能返回,
再然後吃了一個飯忽然想起來了,大概思路就是用多個while循環嵌套,返回上一級就打破當前的while,然後就會返回到上一級的while循環,依次類推
再就是continue的運用,當輸入的是錯誤的信息時就直接跳出這一次循環,感覺非常好用

雖然代碼還可以進行優化,但是自己能寫出這樣的就很不錯了,還加深了對while循環break和continue的理解
不說了,直接上代碼
#數據結構:
‘‘‘需求:
可依次選擇進入各子菜單
可從任意一層往回退到上一層
可從任意一層退出程序
所需新知識點:列表、字典‘‘‘
menu = {
    ‘北京‘:{
        ‘海澱‘:{
            ‘五道口‘:{
                ‘soho‘:{},
                ‘網易‘:{},
                ‘google‘:{}
            },
            ‘中關村‘:{
                ‘愛奇藝‘:{},
                ‘汽車之家‘:{},
                ‘youku‘:{},
            },
            ‘上地‘:{
                ‘百度‘:{},
            },
        },
        ‘昌平‘:{
            ‘沙河‘:{
                ‘老男孩‘:{},
                ‘北航‘:{},
            },
            ‘天通苑‘:{},
            ‘回龍觀‘:{},
        },
        ‘朝陽‘:{},
        ‘東城‘:{},
    },
    ‘上海‘:{
        ‘閔行‘:{
            "人民廣場":{
                ‘炸雞店‘:{}
            }
        },
        ‘閘北‘:{
            ‘火車戰‘:{
                ‘攜程‘:{}
            }
        },
        ‘浦東‘:{},
    },
    ‘山東‘:{},
}
while (1):
    for i in menu:
        print(i)
    choice=input(‘>>‘).strip()
    while(1):
        if choice in menu:
            print (‘進入第一層‘)
            for i in menu[choice]:
                print(i)
        choice2 = input(‘>>‘).strip()
        if (choice2 == ‘return‘):        #if elif 的區別?不要和c++中的else if 混淆!!
            print(‘已經返回到最上一層‘)
            break
        if choice2 in menu[choice]:
            pass                        #用pass語句防止報錯
        else:
            print("輸入有誤請重新輸入1層");
            continue
        while (1):
            if choice2 in menu[choice]:
                print (‘進入第二層‘)
                for i in menu[choice][choice2]:
                    print (i)
            choice3 = input(‘>>‘).strip()
            if (choice3==‘return‘):
                break
            if choice3 in menu[choice][choice2]:
                while (1):
                    if choice3 in menu[choice][choice2]:
                        print(‘進入第三層‘)
                        for i in menu[choice][choice2][choice3]:
                            print(i)
                        choice4 = input(‘>>‘).strip()
                    if (choice4 == ‘return‘):
                        break
                    else:
                        print("輸入有誤請重新輸入3層")
            else:
                print("輸入有誤請重新輸入2層");

  

 

三級菜單作業