Python自动化3.0-------学习之路-------三级菜单程序!

三级菜单程序

1、字典使用

2、while循环

3、for循环

4、break和continue

map = {
    "北方":{
        "北京":{"朝阳":["朝阳一","朝阳二"],"东城":["东城一","东城二"]},
        "上海":{"徐汇":["徐汇一","徐汇二"],"虹桥":["虹桥一","虹桥二"]},

    },
    "南方":{
        "广州":{"天河":["天河一","天河二"],"番禺":["番禺一","番禺二"]},
        "深圳":{"罗湖":["罗湖一","罗湖二"],"福田":["福田一","福田二"]},
},
}
be_info = '''
-------------------------
-------welcome-----------
-------------------------
-----区域:----------
'''
print(be_info)#输出一级菜单,即区域
for i in map:
    print(i)
print("------------------")
flag = False
for i in range(3):  #只有三次输入区域的机会
    if flag:    #标记退出最外一层循环的指令
        break
    area_name = input("你想查询上述哪个区域:")  #玩家输入要查询到区域
    if area_name in map:  #判断玩家输入的区域是否在字典中
        area1 = map[area_name]
        city = area1.keys()  #获取区域的键值,即区域下面包含的城市
        print(city)  #测试看区域下面的城市是否正确
        while True:
            if flag:  # 跳出while循环的标记
                break
            print("-----------它包含了如下一些城市----------")
            for j in city:#依次输出这些城市
                print(j)
            print("-----------------------------------")
            city_name = input("你想查询哪个城市:")#玩家输入要查询的城市

            if city_name in city:
                countryName = map[area_name][city_name]#输出城市下一级菜单下包含的县
                while True:
                    print("----------包含了这些县---------")
                    for i in countryName:
                        print(i)#依次输出这些玩家指定城市下面的县

                    print("----------------------------------")
                    place_name = input("你想查询哪个县")#输入要查询的县

                    if place_name in countryName:
                        placeName = map[area_name][city_name][place_name]
                        print("---------包含了这些地方----------")
                        for i in placeName:#打印县级下面包含的地方
                            print(i)
                    else:
                        print("您输入的县有误,请重新输入")#如果县级输入错误,则提示重新输入
                        continue
                    back_or_quit = input("请问是否退出?按b:Back是返回上一级菜单;按q:Exit是退出整个程序")#是否返回上一级
                    if back_or_quit == "q":
                        flag = True  # 用于本层循环的标记
                        break  # 跳出while内循环
                    if back_or_quit == "b":
                        continue  # 跳出当次循环,重新进入下一次循环,输入包含的县,并输入要查询的县

#                if flag:  # 跳出外循环的条件满足
 #                   break  #
            if city_name not in city:
                print("您输入的城市不对,请重新输入:")#如果玩家输入的城市不在字典中,则提示重新输入
                continue
 #
else:  # 上面的3次for循环正常执行完毕,else才会执行,如果是不正常退出(break),else不会执行
    print("3次输入错误,程序退出")#如果玩家超过三次输入错误的区域,那么退出程序

  

posted @ 2017-07-24 10:45  Mego_Mateng  阅读(134)  评论(0编辑  收藏  举报