zoukankan      html  css  js  c++  java
  • 三级菜单的实现

    一、需求:

    三级菜单展示入下:

    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
  • 相关阅读:
    JS、JQuery和ExtJs的跨域处理
    百度地图API的IP定位城市和浏览器定位(转)
    jQuery简单易用的网页内容打印插件
    JS控制打印指定div
    好久没弄数学了,一本书上出现了,应该是指代了什么意思,问下.
    Java String类型数据的字节长度
    【转】oracle回闪操作
    c3p0数据库连接池死锁问题
    easyui datagrid 单选框 效果
    js插件---webuploader 使用(lavarel中使用)
  • 原文地址:https://www.cnblogs.com/yamei/p/5508715.html
Copyright © 2011-2022 走看看