三级登陆菜单

python第七天_数据python第七天_跳出循环_02
city = {
    "湖北省": {
        "武汉市":{
            "江岸区":{
                "360":{...}},
            "江汉区":{
                "小米":{...}},
            "硚口区":{
                "百度":{...}},
             },
        "宜昌市":{
            "西陵区":{
                "京东":{...}},
            "伍家岗区":{
                "淘宝":{...}},
         }
    },
    "湖南省": {
        "长沙市": {
            "芙蓉区":{
                "中关村":{...},
                 "谷歌":{...}}
        },
            "荷塘区":{
                "微软":{...},
               "阿里巴巴":{...}},
            }
    }
back_flag=0
while back_flag == False:
    
    choice=input("请输入:").strip()
    if choice  in  city: #判断输入的字符在是否在city的首层键里面
          while back_flag == False:
                for key2  in city[choice]:
                   print(key2)              #循环取出第二层--市
                choice2=input("请输入:").strip()
                if choice2 in  city[choice]:
                    while back_flag == False:
                       for key3 in city[choice][choice2]:
                            print(key3)          #循环取出第三层--区县
                       choice3 = input("请输入:").strip()
                       if choice3 in city[choice][choice2]:
                               while back_flag == False:
                                 for key4 in city[choice][choice2][choice3]:
                                   print(key4)       #循环取出第四层--企业
                                 choice4 = input("请输入:").strip()
                                 if  choice4=="b":
                                     back_flag = True
                                 elif  choice4 in city[choice][choice2][choice3]:
                                    while back_flag == False:
                                       for key5 in city[choice][choice2][choice3][choice4]:
                                          print(key5,"----这是最后一层")   #循环取出第五层--企业内容为空
                                       choice5 = input("请输入:").strip()
                                       if choice5=="b":
                                           back_flag = True
                                    else:
                                        back_flag = False
                               else:
                                   back_flag = False
                       elif choice3 == "b":
                                back_flag = True
                       else:
                                   print("你输入选项的未在菜单中,请重新输入")
                    else:
                         back_flag = False
                elif choice2 == "b":
                   back_flag = True
                else:
                       print("你输入选项的未在菜单中,请重新输入")
          else:
                back_flag = False
    elif choice=="b":
        back_flag =True
    else:
            print("你输入选项的未在菜单中,请重新输入")
View Code

三级登陆菜单  进阶版 

city = {
    "湖北省": {
        "武汉市":{
            "江岸区":{
                "360":{...}},
            "江汉区":{
                "小米":{...}},
            "硚口区":{
                "百度":{...}},
             },
        "宜昌市":{
            "西陵区":{
                "京东":{...}},
            "伍家岗区":{
                "淘宝":{...}},
         }
    },
    "湖南省": {
        "长沙市": {
            "芙蓉区":{
                "中关村":{...},
                 "谷歌":{...}}
        },
            "荷塘区":{
                "微软":{...},
               "阿里巴巴":{...}},
            }
}
current_list=city      #定义一个变量 用于存放字典
p_list=[]              #定义一个列表,用于存放上父节点
while True:
    for  key  in  current_list:
        print(key)                     #循环取出current_list中的键
    choice=input("请输入:").strip()    #输入数据.strip() 去掉换行和回车符号
    if len(choice)==0:                 #判断输入的数据是否为空,
        continue                       #为空则结束本次循环,进入下一次循环
    if  choice  in current_list:       #如果输入的数据在字典中
        p_list.append(current_list)    #将当前一层的数据存到父列表中  list.append(x)x为要添加的值
        current_list=current_list[choice]   #current_list[choice]进入下一层子列表 ,
        # 将下一层子列表赋值给current_list,循环结束进入下一次循环,则在第一个for中循环遍历字列表中的数值
    elif choice =="q":                 #如果输入的数据为q
        break                          #则直接跳出循环
    elif  choice =="b":                #如果输入的数据为b
        if p_list:                     #如果p_list不为空,(p_list为空返回False,不为空返回True)
            current_list = p_list.pop()  #list.pop()删除列表最后一个数据,并返回(将保存的父列表赋值给current_list)
            #返回初始循环,打印父列表
        else:                          #为空
             break                     #结束循环
    else:                              #输入数据不在范围内
            print("无此项")             #打印无此项