三级菜单的实现

一、需求:

 

三级菜单展示入下:

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

 

posted on 2016-05-19 15:02  mohan  阅读(624)  评论(0编辑  收藏  举报

导航