print("--------城市查询系统---------")
print("--------按数值进行查询--------")
menu={"内蒙古":{"赤峰市":["赤峰1","赤峰2","赤峰3"],"锡盟":["锡盟1","锡盟2","锡盟3"]},
      "上海":{"青浦":["青浦1","青浦2","青浦3"],"黄埔":["黄埔1","黄埔2","黄埔3"]},
      "山东":{"胶州":["胶州1","胶州2","胶州3"],"济南":["济南1","济南2","济南3"]},
      "河南":{"开封":["河南1","河南2","河南3"],"郑州":["郑州","郑州2","郑州3"]}
      }
flag=True
count = 0
while (flag):
    for i,v in enumerate(menu.keys()):
        print("--->",i,v)                                #打印出第一层key value          
    choice_1=input("请输入对应数字,按q退出:--->").strip() #接收键盘输入 .strip()前后空格都没了
    if choice_1=='q':                                      #判断是不是q是就退出  
        flag=False
        break
    if choice_1.isdigit():                                 #确定输入的是数字
        num=int(choice_1)                                  #是输入的为整形数字
        if num<len(menu):                                  #判断输入的数字是否小于字典里键元素个数
            m=list(menu.keys())                            #把字典中的键植入列表中
            key_1=m[num]                                   #取列表里的值m[0],m[1],m[...]
            print(key_1)
            while(flag):                                   #准备进入第二层菜单
                for i1,v1 in enumerate(menu[key_1]):       #打印出第二层菜单
                    print("--->",i1,v1)                    #打印出第二层
                choice_2=input("返回上一层:b 退出:q 请输入对应数字:").strip()#接收信息进入第三层
                if choice_2.isdigit():
                    num_2=int(choice_2)
                    n=list(menu[key_1].keys())          
                    key_2=n[num_2]
                    while(flag):
                        for i2,v2 in enumerate(menu[key_1][key_2]):#打印第二层菜单的信息
                            print("--->",i2,v2)
                        print("查询完毕!!!!")
                        choice=input("返回上一层:b 退出:q-->")
                        if choice=='b':
                            break
                        elif choice=='q':
                            flag=False
                elif  choice_2=='b':
                    break
                elif  choice_2=='q':
                    flag=False
        else:
            print("****请输入规定范围的数字*****")

else:
        print("****请输入数字****")
        
        

Python 城市菜单详解(超详解)的更多相关文章

  1. Python3调用C程序(超详解)

    Python3调用C程序(超详解) Python为什么要调用C? 1.要提高代码的运算速度,C比Python快50倍以上 2.对于C语言里很多传统类库,不想用Python重写,想对从内存到文件接口这样 ...

  2. Python学习一:序列基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7858473.html 邮箱:moyi@moyib ...

  3. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...

  4. python 3.x 爬虫基础---Urllib详解

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 前言 爬虫也了解了一段时间了希望在半个月的时间内 ...

  5. python中argparse模块用法实例详解

    python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...

  6. python selenium 三种等待方式详解[转]

    python selenium 三种等待方式详解   引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待 ...

  7. python设计模式之迭代器与生成器详解(五)

    前言 迭代器是设计模式中的一种行为模式,它提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示.python提倡使用生成器,生成器也是迭代器的一种. 系列文章 python设计模 ...

  8. **Python中的深拷贝和浅拷贝详解

    Python中的深拷贝和浅拷贝详解   这篇文章主要介绍了Python中的深拷贝和浅拷贝详解,本文讲解了变量-对象-引用.可变对象-不可变对象.拷贝等内容.   要说清楚Python中的深浅拷贝,需要 ...

  9. python+requests接口自动化测试框架实例详解

    python+requests接口自动化测试框架实例详解   转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...

随机推荐

  1. Wet Shark and Flowers(思维)

    C. Wet Shark and Flowers time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  2. linux经常使用(一)linux 安装配置 jdk之 找不到安装文件文件夹及source /etc/profile 报unexpected end of file 错误 解决

    linux 安装配置 jdk 应该算是一个非常主要的东西.可是我到如今才自己第一次 正式安装.果然出现了问题.. 问题就是 安装之后 找不到 安装路径 ,进而没法配置环境变量. 现象例如以下: 提示 ...

  3. 新浪微博布局学习——妙用TabHost

    前言 为了更好的开发Android应用程序,除了熟练掌握基本的UI组件和API外,还需要掌握一些技巧,而这些技巧可以通过阅读一些代码来提高,本系列将与大家分享一些新浪微博布局方面的收获,欢迎交流! 声 ...

  4. pwd显示链接文件的真实路径

    1.pwd用于显示当前工作路径 2.pwd -P 用于显示当前的实际工作路径(主要用于链接文件) 加参数难以了理解,看个例子就明白了: 进入链接文件,pwd显示的是链接文件所在的路径,而你不是链接文件 ...

  5. 1.padding和margin,几种参数

    这篇会很短. 那么如上图所示,margin指的是外边距,padding指的是内边距,border自有其像素宽度,element在1335乘以392的地方. margin和padding一样总共有四个, ...

  6. 字典 -- 数据结构与算法的javascript描述 第七章

    字典 字典是一种以键-值对形式存储数据的数据结构 最基本功能规划 add 添加数据到字典 remove 从字典中移除数据 get 从字典中取出数据 count 统计字典数据量 find 查找数据在字典 ...

  7. opacity在IE6~8下无效果,解决的办法

    opacity在IE6~8下无效果,解决的办法 问题出现时rgba()在ie6下不出效果,最后查到是opacity的问题. opacity是css3时出现的,目前主流浏览器都支持.but老IE是个麻烦 ...

  8. HTML系列(五):超链接

    <a> 标签定义超链接,最重要的属性是 href 属性,它指示链接的目标.通过将href属性设定不同类型的值可以使链接指向不同类型的链接地址:内部链接.外部链接.锚链接. 内部链接指的是同 ...

  9. bootstrap2.3.2常用标签的使用

    <!DOCTYPE html> <html lang="zh_CN"> <head> <title>Bootstrap 101 Te ...

  10. vim常用命令总结 (转)

      在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行.你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format ...