就目前为止,我感觉我的学习笔记应该叫“中二病学魔法“,想想看,用中二病的精神学魔法python,虽然“中二病学魔法”听着傻傻的,但是有激情啊,屌屌的,挺好。
火系 = ['1火元素','2离子态','3能量','4焚烧']
冰系 = ['1冰元素','2固态','3减速','4冷凝','5飘雪']
土系 = ['1土元素','2固态','3减速','4沙化','5石化','6液态','7沼泽']
水系 = ['1水元素','2液态','3加速','4润滑']
魔法系 = [火系,冰系,土系,水系]
print(魔法系)
我少写了很多很多系的魔法,但在这里,要着重记一下,有一个叫“离子态”的状态,在python里面应该就是布尔bool元素吧,不是Ture,就是False,不是存在,就是消亡,和离子态很像啊!
先回到刚刚念的咒语,看一下结果什么样呢?
[['1火元素', '2离子态', '3能量', '4焚烧'], ['1冰元素', '2固态', '3减速', '4冷凝', '5飘雪'], ['1土元素', '2固态', '3减速', '4沙化', '5石化', '6液态', '7沼泽'], ['1水元素', '2液态', '3加速', '4润滑']]
我能说这样看着很乱吗?
让我整理一下思路
火系 = ['1火元素','2离子态','3能量','4焚烧']
冰系 = ['1冰元素','2固态','3减速','4冷凝','5飘雪']
土系 = ['1土元素','2固态','3减速','4沙化','5石化','6液态','7沼泽']
水系 = ['1水元素','2液态','3加速','4润滑']
魔法系 = [火系,冰系,土系,水系]
for 魔法排列 in 魔法系:
print(魔法排列)
用之前的for … in ….就是循环排列,看一下结果呗,之前不是排了一堆星星嘛,这回排一下列表。
['1火元素', '2离子态', '3能量', '4焚烧']
['1冰元素', '2固态', '3减速', '4冷凝', '5飘雪']
['1土元素', '2固态', '3减速', '4沙化', '5石化', '6液态', '7沼泽']
['1水元素', '2液态', '3加速', '4润滑']
这回在魔法系后面加[ ],看看是不是跟上次一样。
火系 = ['1火元素','2离子态','3能量','4焚烧']
冰系 = ['1冰元素','2固态','3减速','4冷凝','5飘雪']
土系 = ['1土元素','2固态','3减速','4沙化','5石化','6液态','7沼泽']
水系 = ['1水元素','2液态','3加速','4润滑']
魔法系 = [火系,冰系,土系,水系]
for 魔法排列 in 魔法系[0:4:2]:
print(魔法排列)
结果意料之中,跟range( ) 一样的有步长,结果就显示了火系和土系。
['1火元素', '2离子态', '3能量', '4焚烧']
['1土元素', '2固态', '3减速', '4沙化', '5石化', '6液态', '7沼泽']
列表加for … in ….循环就做了个表格一样的东西出来。既然是表格,那应该可以加入些东西。之前的input( ),不知道我忘了没有,试一下呗。
火系 = ['1火元素','2离子态','3能量','4焚烧']
冰系 = ['1冰元素','2固态','3减速','4冷凝','5飘雪']
土系 = ['1土元素','2固态','3减速','4沙化','5石化','6液态','7沼泽']
水系 = ['1水元素','2液态','3加速','4润滑']
魔法系 = [火系,冰系,土系,水系]
什么系 = str(input('增加一个系:'))
什么系 = [ ]
什么系.append(input('元素:'))
魔法系.append(什么系)
for 魔法排列 in 魔法系:
print(魔法排列)
结果是什么呢?
增加一个系:金系
元素:1金元素
['1火元素', '2离子态', '3能量', '4焚烧']
['1冰元素', '2固态', '3减速', '4冷凝', '5飘雪']
['1土元素', '2固态', '3减速', '4沙化', '5石化', '6液态', '7沼泽']
['1水元素', '2液态', '3加速', '4润滑']
['1金元素']
没有报错,没有报错,这说明什么?说明列表是可以创建的,代表用input()可以创建list,就像是念了土系魔法的咒语,变出了土元素一样啊!
再接再厉,我把金系的元素说明加多一点。
火系 = ['1火元素','2离子态','3能量','4焚烧']
冰系 = ['1冰元素','2固态','3减速','4冷凝','5飘雪']
土系 = ['1土元素','2固态','3减速','4沙化','5石化','6液态','7沼泽']
水系 = ['1水元素','2液态','3加速','4润滑']
魔法系 = [火系,冰系,土系,水系]
什么系 = str(input('增加一个系:'))
什么系 = [ ]
什么系.append(input('增加元素:'))
什么系.extend(input('继续增加多个元素:'))
魔法系.append(什么系)
for 魔法排列 in 魔法系:
print(魔法排列)
结果怎么样?
增加一个系:木系
增加元素:1木元素
继续增加多个元素:2固态,3减速
['1火元素', '2离子态', '3能量', '4焚烧']
['1冰元素', '2固态', '3减速', '4冷凝', '5飘雪']
['1土元素', '2固态', '3减速', '4沙化', '5石化', '6液态', '7沼泽']
['1水元素', '2液态', '3加速', '4润滑']
['1木元素', '2', '固', '态', ',', '3', '减', '速']
这不是我要的结果吧………呃,看来我对extend( ) 理解不到位啊,目前看来,extend( )是只能加单个str符号,连int 元素都增加不了。
火系 = ['1火元素','2离子态','3能量','4焚烧']
冰系 = ['1冰元素','2固态','3减速','4冷凝','5飘雪']
土系 = ['1土元素','2固态','3减速','4沙化','5石化','6液态','7沼泽']
水系 = ['1水元素','2液态','3加速','4润滑']
魔法系 = [火系,冰系,土系,水系]
什么系 = str(input('增加一个系:'))
什么系 = [ ]
几个 = int(input("增加几个元素?" ))
for 循环 in range(几个):
什么系.append(input('增加元素:'))
魔法系.append(什么系)
for 魔法排列 in 魔法系:
print(魔法排列)
噼啪啪啦的写了一堆,突然发现列表就是对for… in…的练习啊!结果应该能让我满意吧。
增加一个系:木系
增加几个元素?3
增加元素:1木元素
增加元素:2固态
增加元素:3减速
['1火元素', '2离子态', '3能量', '4焚烧']
['1冰元素', '2固态', '3减速', '4冷凝', '5飘雪']
['1土元素', '2固态', '3减速', '4沙化', '5石化', '6液态', '7沼泽']
['1水元素', '2液态', '3加速', '4润滑']
['1木元素', '2固态', '3减速']
列表虽好,但是没显示是什么系的,就显示了系里面的元素和状态什么的,不是直观。Python魔法书也很贴心的给了一个比较直观的方法,就是创建字典dictionary,如果说列表是泥巴,元组是石头,字典就是石灰粉了,用好了可以盖房子,用不好就烧眼睛啊……
字典 = { }
字典["火系"] = "1火元素","2离子态"
字典["冰系"] = "1冰元素","2固态","3减速","4冷凝"
print(字典)
结果肯定乱糟糟的
{'火系': ('1火元素', '2离子态'), '冰系': ('1冰元素', '2固态', '3减速', '4冷凝')}
那怎么样能像列表一样清晰明了呢。
字典 = { }
字典["火系"] = ["1火元素","2离子态"]
字典["冰系"] = ["1冰元素","2固态","3减速","4冷凝"]
for 键号 in (字典.keys()):
print(键号,字典[键号])
这样的结果显而易见,应该就是可以排的清晰很多了,print(字典[键号])就会显示键号后面的内容。
火系 ['1火元素', '2离子态']
冰系 ['1冰元素', '2固态', '3减速', '4冷凝']
字典可以由列表组成,那么也可以排序,用sorted(),为什么不能用sort()?好像python的字典不能更改顺序,sorted可以不改变前面的顺序,之前记得有试过sorted( ) 不会把列表变泥巴,这么快就忘了?
也可以增加元素,用input() ,append()加for… in range()……
字典 = { }
字典["b火系"] = ["1火元素","2离子态"]
字典["a冰系"] = ["1冰元素","2固态","3减速","4冷凝"]
for 键号 in sort(字典.keys()):
print(键号,字典[键号])
这样会提示错误,name’sort’ is not defined字典不能被排序。实际上应该是字典本身不能改变顺序,
Traceback (most recent call last):
File "D:\python\sinline.py", line 4, in <module>
for 键号 in sort(字典.keys()):
NameError: name 'sort' is not defined
我再试一下另外一个咒语
字典 = { }
字典["b火系"] = ["1火元素","2离子态"]
字典["a冰系"] = ["1冰元素","2固态","3减速","4冷凝"]
字典集 = 字典[:]
for 键号 in sorted(字典集.keys()):
print(键号,字典集[键号])
这样也会提示错误,列表[:]是可以变泥巴,但自身不边,但是字典[:]变不了字典集,如果没[:]就可以变了,自身也会边成字典集,没有了本体。
字典 = { }
字典["b火系"] = ["1火元素","2离子态"]
字典["a冰系"] = ["1冰元素","2固态","3减速","4冷凝"]
字典集 = 字典
字典集.sort()
for 键号 in (字典集.keys()):
print(键号,字典[键号])
这个咒语,我就是想排序,结果是什么?
Traceback (most recent call last):
File "D:\python\sinline.py", line 5, in <module>
字典集.sort()
AttributeError: 'dict' object has no attribute 'sort'
Python魔法里,字典’dict’就没有排序’sort’的属性’attribute’。
所以sorted( )就这么出现了
字典 = { }
字典["b火系"] = ["1火元素","2离子态"]
字典["a冰系"] = ["1冰元素","2固态","3减速","4冷凝"]
for 键号 in sorted(字典.keys()):
print(键号,字典[键号])
结果是这样的:
a冰系 ['1冰元素', '2固态', '3减速', '4冷凝']
b火系 ['1火元素', '2离子态']
列表和字典要是感觉不够熟练,就多练几次呗,反正基础越牢固,后面越容易。咱都是低级魔法师里的青铜级别,多练这种低阶咒语,不丢人……