【练习题】三级城市选择

python 三级登录

# 1. 可以一层一层的进入到所有层 ;
# 2. 可以在每层返回上一层 ;
# 3. 可以在任意层回退上一层或退出;
menu = {
    '北京':{
        '朝阳':{
            '国贸':{},
                'CICC':{},
                'HP':{},
                '渣打银行':{},
                'CCTV':{},
            },
            '望京':{
                '陌陌':{},
                '奔驰':{},
                '360':{},
            },
            '三里屯':{
                '优衣库':{},
                'apple':{},
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '阿泰包子':{},
            },
            '天通苑':{
                '链家':{},
                '我爱我家':{},
            },
            '回龙观':{},
        },
        '海淀':{
            '五道口':{
                '谷歌':{},
                '网易':{},
                'sohu':{},
                '快手':{},
            },
            '中关村':{
                'youku':{},
                'Iqiyi':{},
                '汽车之家':{},
                '新东方':{},
                'QQ':{},
            },

        },
    },
    '上海':{
        '浦东':{
            '陆家嘴':{
                'CICC':{},
                '高盛':{},
                '摩根':{},
            },
        },
        '闵行':{},
        '静安':{},
    },
    '山东':{
        '济南':{},
        '德州':{
            '乐陵':{
                '丁务镇':{},
                '城区':{},
            },
            '平原':{},
        },
        '青岛':{},
    },
}

floor = menu #定义当前层为menu,实现动态循环;
empty_list = [] #定义一个空列表,保存所有父级,最后一个元素永远都是父级;
while True: #while True 语句中一定要有结束该循环的break语句,否则会一致循环下去
    for key in floor:
        print(key) #打印菜单内容
    #让用户选择输入,strip() 方法用于一处字符串头尾置顶的字符(默认为空格或换行符)或字符序列
    choice = input("请输入地址>>>【返回/b,退出/q】:").strip()
    if choice == 'q': #判断如果用户输入q,便break跳出循环;
        break
    # 判断用户如果输入的字符长度如果为0,便跳出本次循环;
    if len(choice) == 0: #len() 方法返回对象(字符、列表、元组等)长度或项目个数。
        continue
    # 如果用户输入的是菜单里的内容;
    if choice in floor:
        #在进入下一层之前,把当前层追加到列表中;
        # 下一次循环时,如果用户输入b,就可以直接取列表的最后一个值出来;
        empty_list.append(floor) #append() 方法用于在列表末尾添加新的对象;
        floor = floor[choice]   #改成下一层;
    elif choice == 'b': #如果用户输入b;
        if empty_list: #判断列表是否为空
            # pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
            floor = empty_list.pop() #取出列表最后一个值,因为他就是当前层的父级;
    else:
        print('输入有误!')
原文地址:https://www.cnblogs.com/surenliu/p/12736640.html