三级菜单的实现
一、需求:
三级菜单展示入下:
1 北京
1 海淀
1 国家图书馆
2 海龙大厦
3 中关村
2 朝阳
1 SOHO
2 798艺术区
3 亚运村
2 河南
1 郑州
1 新郑
2 二七区
3 金水区
2 商丘
1 虞城
2 柘城
3 夏邑
1.程序开始用户可以看到如下一级菜单:
1 北京
2 河南
2.用户输入数字即可以看到二级菜单,输入q则退出程序,输入b回到一级菜单
如果选择1 北京,显示如下二级菜单
1 海淀
2 朝阳
如果选择2 河南,显示如下二级菜单
1 郑州
2 商丘
3.用户输入数字即可以看到三级菜单,输入q则退出程序,输入b回到一级菜单
如果选择1 北京,1海淀,则显示三级菜单如下:
1 国家图书馆
2 海龙大厦
3 中关村
如果选择2 河南,1郑州,则显示三级菜单如下:
1 新郑
2 二七区
3 金水区
二、流程图
三、具体实现
实现思路:使用字典、列表和while 、for循环
关键知识点:如何让字典有序输出(enumerate())
#!/usr/bin/python #_*_coding:utf-8_*_ import sys ''' 定义一个字典 其中省份是字典,市区是字典,具体的地方名是列表 ''' city = {'北京':{'海淀':['香山','海淀公园','国家图书馆'], '朝阳':['SOHO','798艺术区','亚运村'] }, '河南':{'郑州':['新郑','27区','金水区'], '商丘':['虞城','柘城','夏邑'] } } ''' 通过while循环,程序正式开始运行 1 beijing 2.henan 接下来提示用户进行输入,此时用户可以根据数字来选择城市,或者是按q退出循环 ''' while True: for k,v in enumerate(city): print k+1,v num_a = raw_input('please input a number to choose a city,or input q to quit:') ''' 接下来判断用户的输入 1.如果输入的内容为q,则退出程序 2.如果输入的内容是数字1,则相当于选择了beijing,choice_a=v(beijing),选择完成后给出提示用户 具体选择是什么,接下来就就进入到二级菜单 ''' if num_a == 'q': sys.exit() if num_a is not None: for k,v in enumerate(city): if k+1 == int(num_a): choice_a = v print 'Your choice is : %s ' %choice_a ''' 进入二级菜单,展现给用户的内容如下: 1 haidian 2 chaoyang 给出提示让输入用户具体要进入北京的哪个区 ''' while True: for k,v in enumerate(city[choice_a]): print k+1,v num_b = raw_input('please input a number to choose a district,or input b back to first menu,q to quit:') ''' 接下来判断用户的输入: 1.输入内容为b,则返回到一级菜单 2.输入内容为q,则跳出程序 3.输入内容为数字,表示选择haidian,即choice_b=v(haidian) ''' if num_b == 'q': sys.exit() if num_b == 'b': break if num_b is not None: for k,v in enumerate(city[choice_a]): if k+1 == int(num_b): choice_b = v print 'your choice is : %s district' %choice_b ''' 进入三级菜单,展现给用户的内容如下: 1 zhongguancun 2 hailongdasha 3 guojiatushuguan 给出提示让输入用户具体要进入北京市海淀区的某个具体地方 ''' while True: for k,v in enumerate(city[choice_a][choice_b]): print k+1,v num_c = raw_input('please input a number to choose a place,or b back to second menu ,or q to quit:') ''' 接下来判断用户的输入: 1.输入内容为b,则返回到一级菜单 2.输入内容为q,则跳出程序 3.输入内容为数字,表示选择haidian,即choice_c=v(guojiatushuguan),并告诉用户选择的是什么 ''' if num_c == 'q': sys.exit() if num_c == 'b': break ''' if num_c is not None: for k,v in enumerate(city[choice_a][choice_b]): if k+1 == int(num_c): choic_c = v print 'you choice is: %s .' %choic_c '''
程序输出结果如下:
1 北京 2 河南 please input a number to choose a city,or input q to quit:1 Your choice is : 北京 1 朝阳 2 海淀 please input a number to choose a district,or input b back to first menu,q to quit:b 1 北京 2 河南 please input a number to choose a city,or input q to quit:1 Your choice is : 北京 1 朝阳 2 海淀 please input a number to choose a district,or input b back to first menu,q to quit:2 your choice is : 海淀 district 1 香山 2 海淀公园 3 国家图书馆 please input a number to choose a place,or b back to second menu ,or q to quit:1 you choice is: 香山 . 1 香山 2 海淀公园 3 国家图书馆 please input a number to choose a place,or b back to second menu ,or q to quit:b 1 朝阳 2 海淀 please input a number to choose a district,or input b back to first menu,q to quit:b 1 北京 2 河南 please input a number to choose a city,or input q to quit:q