栈,队列的应用

栈  

1.计算文件的大小

# def get_size(path):
#     sum = 0
#     l = [path]
#     while l :
#         path = l.pop()
#         lis = os.listdir(path)
#         for name in lis:
#             son_path = os.path.join(path,name)
#             if os.path.isfile(son_path):
#                 sum+=os.path.getsize(son_path)
#             else:
#                 l.append(son_path)
#     return sum
# result = get_size(path)
# print(result)

 

 1 def get_size(path):
 2     sum = 0
 3     l = [path]
 4     while l :
 5         path = l.pop()
 6         lis = os.listdir(path)
 7         for name in lis:
 8             son_path = os.path.join(path,name)
 9             if os.path.isfile(son_path):
10                 sum+=os.path.getsize(son_path)
11             else:
12                 l.append(son_path)
13     return sum
14 result = get_size(path)
15 print(result)
View Code

2.三级菜单

 1 menu = {
 2     '北京': {
 3         '海淀': {
 4             '五道口': {
 5                 'soho': {},
 6                 '网易': {},
 7                 'google': {}
 8             },
 9             '中关村': {
10                 '爱奇艺': {},
11                 '汽车之家': {},
12                 'youku': {},
13             },
14             '上地': {
15                 '百度': {},
16             },
17         },
18         '昌平': {
19             '沙河': {
20                 '老男孩': {},
21                 '北航': {},
22             },
23             '天通苑': {},
24             '回龙观': {},
25         },
26         '朝阳': {},
27         '东城': {},
28     },
29     '上海': {
30         '闵行': {
31             "人民广场": {
32                 '炸鸡店': {}
33             }
34         },
35         '闸北': {
36             '火车战': {
37                 '携程': {}
38             }
39         },
40         '浦东': {},
41     },
42     '山东': {},
43 }
44 
45 li = [menu]
46 while 1:
47     for key in li[-1]
48         print(key)
49     k = input('<<<')
50     if k in li[-1]:
51         li.append(li[-1][k])
52     elif k.upper() == 'B'
53         li.pop
54     elif k.upper() == 'Q'
55         break
View Code
menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '网易': {},
                'google': {}
            },
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                'youku': {},
            },
            '上地': {
                '百度': {},
            },
        },
        '昌平': {
            '沙河': {
                '老男孩': {},
                '北航': {},
            },
            '天通苑': {},
            '回龙观': {},
        },
        '朝阳': {},
        '东城': {},
    },
    '上海': {
        '闵行': {
            "人民广场": {
                '炸鸡店': {}
            }
        },
        '闸北': {
            '火车战': {
                '携程': {}
            }
        },
        '浦东': {},
    },
    '山东': {},
}

li = [menu]
while li:  # 这个是以li为条件,而不是1  因为和下面的 Q 有关联
    for key in li[-1]:
        print(key)
    k = input('<<<')  #k是输入
    if k in li[-1]:  
        li.append(li[-1][k])
    elif k.upper() == 'Q':  #  Q
        li.clear() #清空了字典,所以再次循环判断的时候就为空 就自动退出 不再循环
    elif k.upper() == 'B':
        li.pop()

 

 

posted @ 2019-03-26 18:24  帅气的小神气  阅读(150)  评论(0编辑  收藏  举报