代码改变世界

Python学习笔记4:三级菜单简洁版+list,dir说明

2018-05-23 17:33  一觉天亮  阅读(354)  评论(0编辑  收藏  举报
 1 import os,sys
 2 map = {
 3         '湖北':{
 4                 '武汉':{'江岸区':[('长江北岸','武汉市东北部,'),('70.25平方千米',),(430000,),{'populace':'100W'}],
 5                       '江汉区':[('武汉市汉口地区中部',),('33.43平方公里',),(430000,),{'populace':'83W'}],
 6                       '硚口区':[('武汉市主城区西北部',),('41.46平方公里',),(430000,),{'populace':'64W'}],
 7                       '汉阳区':[('武汉市西南部',),('108平方公里',),(430050,),{'populace':'91W'}],
 8                       '武昌区':[('武汉市东南部',),('107.76平方千米',),(430061,),{'populace':'106W'}],
 9                       '青山区':[('武汉市中游南岸',),('80.47平方公里',),(430080,),{'populace':'54W'}],
10                       '洪山区':[('武汉市东南部',),('480平方公里',),(430070,),{'populace':'126W'}],
11                       '江夏区':[('武汉市南部',),('2018平方公里',),(430200,),{'populace':'82W'}]},
12                 '黄石':{'黄石港区':[('位于鄂东南',),('42.4平方公里',),(43500,),{'populace':'22W'}],
13                       '西塞山区':[('长江中游'),('49.95平方公里'),(435000),{'populace':'26W'}],
14                       '下陆区':[('黄石市北部',),('75平方公里',),(435005,),{'populace':'11W'}],
15                       '铁山区':[('黄石市西部',),('28.7平方公里',),(435006,),{'populace':'7W'}],
16                       '阳新县':[('长江以南','幕阜山脉北麓'),('2780平方千米',),(435200,),{'populace':'109W'}],
17                       '大冶市':[('长江以南','幕阜山脉以北'),('1566.3平方公里',),(435100,),{'populace':'98W'}]},
18                 '十堰':{'茅箭区':[('十堰市中部',),('540平方公里',),(442000,),{'populace':'27W'}],
19                       '张湾区':[('十堰市中部',),('657平方公里',),(442000,),{'populace':'40W'}],
20                       '郧阳区':[('十堰市北部、西部',),('3863平方公里',),(442500,),{'populace':'64W'}],
21                       '郧西县':[('十堰市西北部',),('3509平方千米',),(442600,),{'populace':'50W'}],
22                       '竹山县':[('十堰市西南','竹溪以东,房县以西'),('3586平方千米',),(442200,),{'populace':'51W'}],
23                       '竹溪县':[('十堰市西南',),('3279平方公里',),(442300,),{'populace':'36W'}],
24                       '房县':[('十堰市南部',),('5115平方公里',),(442100,),{'populace':'49W'}],
25                       '丹江口市':[('中国中部','十堰 襄阳的中间','汉江中上游'),('3121平方千米',),(442700,),{'populace':'98W'}]},
26                 '随州':{'曾都区':[('鄂北',),('1316平方公里',),(441300,),{'populace':'82W'}],
27                       '随县':[('湖北省北部',),('5673平方公里',),(431500,),{'populace':'107W'}],
28                       '广水市':[('武汉市北部','随州市东部'),('2675平方公里',),(432700,),{'populace':'104W'}]},
29                 '荆州':{'沙市区':[('江汉平原腹地','荆州地区东北'),('492平方千米',),(434000,),{'populace':'61W'}],
30                       '荆州区':[('湖北省中南部',),('1045平方公里'),(434000),{'populace':'60W'}],
31                       '江陵县':[('湖北省中南部',),('1032平方千米',),(434100,),{'populace':'40W'}],
32                       '监利县':[('湖北省南部','长江北岸'),('3118平方千米',),(433300,),{'populace':'155W'}],
33                       '公安县':[('湖北省中南部','长江中游荆江南岸'),('2258平方公里',),(434300,),{'populace':'102W'}],
34                       '松滋市':[('湖北省西南部',),('2235平方公里'),(434200,),{'populace':'85W'}],
35                       '石首市':[('湖北省南部','长江中游岸边'),('1427平方千米',),(434400,),{'populace':'98W'}],
36                       '洪湖市':[('长江中下游','江汉平原东南部'),('2519平方公里',),(433200,),{'populace':'93W'}]}
37         },
38         '湖南':{'长沙市':{'芙蓉区':'出水芙蓉,静秋思','天心区':'为百姓请命,为天地立心,为万世开太平',
39                      '开福区':'开元盛世,贞观之治','雨花区':'清泉石上流',
40                      '望城区':'烽火连三月,家书抵万金','长沙县':'火烧长沙','浏阳市':'湘江有个浏阳河'},
41               '株洲市':{'天元区':'天王盖地宝','荷塘区':'小荷才露尖尖角','芦淞区':'芦花鸡',
42                      '石峰区':'壁立千仞','株洲县':'株洲,株洲'},
43               '湘潭市':{'岳塘区':'这个人很懒,什么都不想写','雨湖区':'这个人很懒,什么都不想写',
44                      '湘乡市':'这个人很懒,什么都不想写','韶山市':'这个人很懒,什么都不想写',
45                      '湘潭县':'这个人很懒,什么都不想写'},
46               '衡阳市':{'雁峰区':'这个人很懒,什么都不想写','石鼓区':'这个人很懒,什么都不想写',
47                      '珠晖区':'这个人很懒,什么都不想写','南岳区':'这个人很懒,什么都不想写'},
48               '邵阳市':{'双清区':'这个人很懒,什么都不想写','大祥区':'这个人很懒,什么都不想写',
49                      '北塔区':'这个人很懒,什么都不想写'},
50               '岳阳市':{'岳阳楼区':'这个人很懒,什么都不想写','君山区':'这个人很懒,什么都不想写',
51                      '云溪区':'这个人很懒,什么都不想写','临湘区':'这个人很懒,什么都不想写'},
52               '常德市':{'武陵区':'这个人很懒,什么都不想写','鼎城区':'这个人很懒,什么都不想写',
53                      '石门县':'这个人很懒,什么都不想写'}
54               },
55         '四川':{'成都市':{'武侯区':'这个人很懒,什么都不想写','锦江区':'这个人很懒,什么都不想写',
56                      '青羊区':'这个人很懒,什么都不想写','金牛区':'这个人很懒,什么都不想写'},
57               '自贡市':{'贡井区':'这个人很懒,什么都不想写','大安区':'这个人很懒,什么都不想写',
58                      '沿滩区':'这个人很懒,什么都不想写'},
59               '德阳市':{'罗江区':'这个人很懒,什么都不想写','中江县':'这个人很懒,什么都不想写',
60                      '广汉市':'这个人很懒,什么都不想写'},
61               '广元市':{'朝天区':'这个人很懒,什么都不想写','青川县':'这个人很懒,什么都不想写',
62                      '剑阁县':'这个人很懒,什么都不想写'}
63               },
64 }
65 
66 dir_list = []
67 while True:
68         for keys in map:
69                 print(keys)
70         choose = input('请输入您需要访问的省份:''B[返回]/Q[退去]')
71         if choose in map:
72                 dir_list.append(map)
73                 map = map[choose]
74         elif choose == 'B':
75                 if dir_list:
76                         map = dir_list.pop()
77         elif choose == 'Q':
78                 sys.exit('您已退出系统,欢迎下次登录')
79         else:
80                 print('您的输入有误,请重新输入:')
81                 continue
三级菜单简洁版

 

 

list查看和切片:

 1 list = [ 12,34,'永不磨灭的番号','亮剑','士兵突击','a','POP','US','apple',9527]
 2 #查看,缩影值从0开始
 3 print(list)
 4 >>>[12, 34, '永不磨灭的番号', '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple', 9527]
 5 print(list[0])
 6 >>>12
 7 print(list[-1])
 8 >>>9527
 9 #切片,
10 print(list[1:5])
11 >>>[34, '永不磨灭的番号', '亮剑', '士兵突击']
12 print(list[5::])
13 >>>['a', 'POP', 'US', 'apple', 9527]
14 print(list[2:7:3])   #3是步长
15 >>>['永不磨灭的番号', 'a']
16 print(list[-1:])
17 >>>[9527]
18 print(list[-5:-1])
19 >>>['a', 'POP', 'US', 'apple']
20 print(list[-1:-6])  #不管缩影值为正还是负,实际读取顺序还是从头到尾。
21 >>>[]
22 print(list[-1:3])
23 >>>[]
24 print(list[::3])
25 >>>[12, '亮剑', 'POP', 9527]
26 print(list[:3])
27 >>>[12, 34, '永不磨灭的番号']

 统计和缩影位置:

1 list = [ 12,34,'永不磨灭的番号','亮剑','士兵突击','a','POP','US','apple',9527]
2 print(list)
3 print(list.count('a'))   #统计元素出现的次数
4 >>>1
5 print(list.index('亮剑'))  #查看已知元素对应的缩影位置
6 >>>3

增加:

 1 list = [ 12,34,'永不磨灭的番号','亮剑','士兵突击','a','POP','US','apple',9527]
 2 #尾部追加
 3 list.append(12)
 4 print(list)
 5 >>>[12, 34, '永不磨灭的番号', '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple', 9527, 12]
 6 #指定缩影位置插入
 7 list.insert(3,'黎明')
 8 print(list)
 9 >>>[12, 34, '永不磨灭的番号', '黎明', '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple', 9527, 12]
10 #在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
11 list_1 = ['指环王','哈利.波特','加勒比海盗',12]
12 list.extend(list)
13 print(list)
14 >>>[12, 34, '永不磨灭的番号', '黎明', '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple', 9527, 12, 12, 34, '永不磨灭的番号', '黎明', '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple', 9527, 12]
15 list.extend(list_1)
16 print(list)
17 >>>[12, 34, '永不磨灭的番号', '黎明', '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple', 9527, 12, 12, 34, '永不磨灭的番号', '黎明', '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple', 9527, 12, '指环王', '哈利.波特', '加勒比海盗', 12]

修改:

1 list = [ 12,34,'永不磨灭的番号','亮剑','士兵突击','a','POP','US','apple',9527]
2 list[1]=3344
3 print(list)
4 >>>[12, 3344, '永不磨灭的番号', '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple', 9527]
5 list[0:3]=['黄昏','日落','夕阳']
6 print(list)
7 >>>['黄昏', '日落', '夕阳', '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple', 9527]

删除:

 1 list = [ 12,34,'永不磨灭的番号','亮剑','士兵突击','a','POP','US','apple',9527]
 2 del list[2] #缩影
 3 print(list)
 4 >>>[12, 34, '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple', 9527]
 5 list.remove(12)  #元素
 6 print(list)
 7 >>>[34, '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple', 9527]
 8 list.pop()  #默认删除最后一个元素
 9 print(list)
10 >>>[34, '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple']
11 list.pop(4) #删除指定缩影值
12 print(list)
13 >>>[34, '亮剑', '士兵突击', 'a', 'US', 'apple']
14 list.clear() #清空列表
15 print(list)
16 >>>[]
17 del list  #删除列表
18 print(list)
19 >>><class 'list'>

排序和复制:

 1 list = [ 12,34,'永不磨灭的番号','亮剑','士兵突击','a','POP','US','apple',9527]
 2 list_1=list.copy()
 3 print(list_1)
 4 >>>[12, 34, '永不磨灭的番号', '亮剑', '士兵突击', 'a', 'POP', 'US', 'apple', 9527]
 5 list.sort()
 6 print(list)  # 3.0不同的数据类型不能排序
 7 >>>TypeError: '<' not supported between instances of 'str' and 'int'
 8 
 9 list = [ '12','34','永不磨灭的番号','亮剑','士兵突击','a','POP','US','apple','9527']
10 list.sort() #升序
11 print(list)
12 >>>['12', '34', '9527', 'POP', 'US', 'a', 'apple', '亮剑', '士兵突击', '永不磨灭的番号']
13 list.sort(reverse=True) #reverse = True 降序
14 print(list)
15 >>>['永不磨灭的番号', '士兵突击', '亮剑', 'apple', 'a', 'US', 'POP', '9527', '34', '12']
16 list.sort(reverse=False)  #reverse = False 升序
17 print(list)
18 >>>['12', '34', '9527', 'POP', 'US', 'a', 'apple', '亮剑', '士兵突击', '永不磨灭的番号']
19 list.reverse()  #对列表的元素进行反向排序
20 print(list)
21 >>>['9527', 'apple', 'US', 'POP', 'a', '士兵突击', '亮剑', '永不磨灭的番号', '34', '12']

判断:

1 list_1 = [ '12','34','永不磨灭的番号','亮剑','士兵突击','a','POP','US','apple','9527']
2 print('12' in list_1)
3 >>>True
4 print(type(list_1) is list)
5 >>>True

元祖tuple,只读列表。只有查,切片,count 和 index。