-
数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{} } }, '闸北':{ '火车战':{ '携程':{} } }, '浦东':{}, }, '山东':{}, } 需求: 可依次选择进入各子菜单 可从任意一层往回退到上一层 可从任意一层退出程序 所需新知识点:列表、字典
-
踩分点:
1.只用一个while循环,且整体代码量少于15行按完成需求/条—25分 2.只用一个while循环,且整体代码量多于15行需求全部完成给90分 3.其他情况按完成需求/条—20分
1
menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'Google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': {}, '优酷': {} }, '上地': { '百度': {}, }, }, '昌平': { '沙河': { '老男孩': {}, '北航': {}, }, '通天苑': {}, '回龙观': {}, }, '朝阳': {}, '东城': {}, }, '上海': { '闵行': { '人民广场': { '炸鸡店': {}, }, }, '闸北': { '火车站': { '携程': {} } }, '浦东': {}, }, '山东': {}, } while True: for k in menu: print(k) choice = input("输入地名进入菜单;输入b返回上一级菜单:输入q退出").strip() if choice in menu: while True: for k2 in menu[choice]: print (k2) choice2 = input("输入地名进入菜单;输入b返回上一级菜单:输入q退出:").strip() if choice2 in menu[choice]: while True: for k3 in menu[choice][choice2]: print(k3) choice3 = input("输入地名进入菜单;输入b返回上一级菜单:输入q退出:").strip() if choice3 in menu[choice][choice2]: for k4 in menu[choice][choice2][choice3]: print(k4) choice4 = input("最后一级菜单,输入b返回上一级菜单:输入q退出:") if choice4 == "b": break elif choice4 == "q": exit() elif choice3 == "b": break elif choice3 == "q": exit() elif choice2 == "b": break elif choice2 == "q": exit()
2,升级版
menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': {}, 'youku': {}, }, '上地': { '百度': {}, }, }, '昌平': { '沙河': { '老男孩': {}, '北航': {}, }, '天通苑': {}, '回龙观': {}, }, '朝阳': {}, '东城': {}, }, '上海': { '闵行': { "人民广场": { '炸鸡店': {} } }, '闸北': { '火车战': { '携程': {} } }, '浦东': {}, }, '山东': {}, } temp = menu layers = [] while True: for k in temp: print (k) choice = input(">").strip() if not choice: continue if choice in temp: layers.append(temp) temp = temp[choice] elif choice == 'b': if len(layers) != 0: temp = layers.pop() else: print ("顶层") elif choice == 'q': exit()