实例 - 购物车 (字典、循环)

menu = {
    '北京':{
        '朝阳':{
            '国贸':{
                'CICC': {},
                'HP': {},
                '渣打银行': {},
                'CCTV': {},
            },
            '望京':{
                '陌陌': {},
                '奔驰': {},
                '360': {},
            },
            '三里屯':{
                '优衣库':{},
                'apple':{},
            }

        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '阿泰包子':{},
            },
            '天通苑':{
                '链家':{},
                '我爱我家':{},
            },
            '回龙观':{}
        },
        '海淀':{
            '五道口':{
                '谷歌':{},
                '网易':{},
                'Sohu':{},
                'Sogo':{},
                '快手':{},
            },
            '中关村':{
                'youku':{},
                'Iqiyi':{},
                '汽车之家':{},
                '新东方':{},
                'QQ':{},
            },
        }
    },
    '上海':{
        '浦东':{
            '陆家嘴':{
                'CICC':{},
                '高盛':{},
                '摩根':{},
            },
            '外滩':{},
        },
        '闵行':{},
        '静安':{},
    },
    '山东':{
        '济南':{
        },
        '德州':{
            '乐陵':{

            },
            '平原':{},
            '丁坞镇':{},
            '城区':{},
        },
        '青岛':{
        },
    }
}

current_layer = menu #实现动态循环
parent_layers = [] #保存所有父级,最后一个元素永远都是父级

while True:
    for key in current_layer:
        print(key)
    choice = input('>>>:').strip() #移除字符串头尾指定的字符(默认为空格)
    if len(choice) == 0:continue
    if choice in current_layer:
        parent_layers.append(current_layer) #在进入下一层之前,把当前层
        #(也就是下一层的父级)追加到列表中,下一次loop,当用户选择b,
        # 就可以直接取列表的最后一个值出来
        current_layer = current_layer[choice] #改成子层
    elif choice == 'b':
        if parent_layers: #空列表False,非空列表为True
            current_layer = parent_layers.pop() #取出列表的最后一个值,因为就是当前层的父级
    else:
        'invalid input'

 

posted @ 2018-02-24 13:21  皮蛋小顽童  阅读(86)  评论(0编辑  收藏  举报