[Python] 纯文本查看 复制代码
5.1什么是变量
两个列表的一个是[1,2,3,4,5,6] 一个是[1,2,3]
把第一个列表定义为A 第二个列表定义为B
要求A乘以3,然后加上B,再加上A
[1,2,3,4,5,6]*3 + [1,2,3] + [1,2,3,4,5,6] 回车得
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 1, 2, 3, 4, 5, 6]
这么长得字符 写起来很费事 我们可以加一个变量
定义一个变量非常简单
A = [1,2,3,4,5,6] 回车虽然是空但是
print(A)
赋值
B = [1,2,3]
A*3 +B +A 同样会得到
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 1, 2, 3, 4, 5, 6]
['雷电术','灵魂火符','五雷轰','施毒术']
skill = ['雷电术','灵魂火符' ]
three_leaf_grass colver
5-2变量得命名规则
1、变量名的首字母不能为数字
字母、数字、下划线(其他特殊字符都不行)
系统关键字 不能用在变量名中 保留关键字
举例不能用 and= if= type虽然可以用,但是不推荐 。
变量名 区分大小写
变量没有类型限制
a= '1'
a= 1
a= (1,2,3)
a= {1,2,3}
2、
a=1
b=a
a=3
得print(b) 回车得1 定义了B=A 那么B不会随着A变化而变化
复杂一点
a=[1,2,3,4,5]
b=a
a[0]='1'
print(a) 回车得['1', 2, 3, 4, 5]
print(b) 回车得['1', 2, 3, 4, 5]
B随着A变化而变化
为什么这样?
上面是int值类型 而下面例子list是引用类型
值类型:int str tuple 不可改变
引用类型:list set dict 可变
a='hello'
>>> a='python'
>>> print(a)
python
>>> a='hello'
>>> a=a+'python'
>>> print(a)
hellopython
验证如下: 改变后字符串的内存ID也变了
>>> b='hello'
>>> id(b)
1358140514464
>>> b=b+'python'
>>> id(b)
1358140457328
5-4 列表的可变和元组的不可变
>>> a=[1,2,3]
>>> id(a)
1496439070216
>>> hex(id(a))
'0x15c6ab81e08'
>>> a[0]='12'
>>> id(a)
1496439070216
>>> a=(1,2,3)
>>> a[0]='1'
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
a[0]='1'
TypeError: 'tuple' object does not support item assignment
>>> b=[1,2,3]
>>> b.append(4)
>>> print(b)
[1, 2, 3, 4]
>>> c=(1,2,3)
>>> c.append(4)
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
c.append(4)
AttributeError: 'tuple' object has no attribute 'append'
>>>
能用元组用元组,尽量别用列表,这样错的话,会报错。
>>> a=(1,2,3,[1,2,4])
如果想得到数字4 需要
>>> a[3]
[1, 2, 4]
>>> a[3][2]
4
>>> a=(1,2,3,[1,2,['a','b','c']])
>>> a[3][2][1]
'b'
>>> a=(1,2,3,[1,2,4])
>>> a[3][2]='4'
>>> print(a)
(1, 2, 3, [1, 2, '4'])
5-5运算符
+ - * / //
2**5 代表2的5次方
插图运算符---------------------------------------------
5-6
除了运算符,还有赋值
>>> c=1
>>> c=c+1
>>> print(c)
2
>>> c+=1
>>> print(c)
3
c=c+1 其实也就是 c+=1 这就是+=的用法。
再例如:
>>> b=2
>>> a=3
>>> b+=a
>>> print(b)
5
再继续:
>>> b-=a
>>> print(b)
2
说明b-=a 等于b=b-a
再继续
>>> b*=a
>>> print(b)
6
说明b*=a 等于b=b*a
5-7 关系运算法 可以理解为比较运算符
不仅仅是数字的比较 字符串也可以比较
举例
>>> 1==1
True 会得到一个bool值
>>> 1>1
False
>>> 1>=1 >=表示大于或者等于
True
>>>
>>> a=1
>>> b=2
>>> a!=b !=表示不等于
True
>>> b=1
>>> b+=b>=1
>>> print(b)
2
5-8 不只是数字才能做比较运算
为什么等于2呢?
>>> print(b>1)
True
>>> int(True)
1
所以b=b+1
>>> 'a' > 'b'
False
因为
>>> ord('a')
97
>>> ord('b')
98
>>> 'abc' < 'abd'
True
但是
>>> ord('abc') 会报错
在两组字符做比较时候,系统会拿第一个字符和第二个字符做比较。
>>> ord('c') < ord('d')
True
因为
>>> print(ord('c'),ord('d'))
99 100
>>> [1,2,3]<[2,3,4]
True
说明列表可以比较
>>> (1,2,3)<(1,3,3)
True
说明元组可以比较
5-9 逻辑运算符
主要是来操作bool布尔类型,返回也是bool布尔类型。
and 是且的意思 如果有两个条件都true 结果才能TRUE
>>> True and True
True
>>> True and False
False
or是或的意思
>>> True or True
True
>>> False or False
False
no是否则意思
>>> not True
False
>>> not not True
True
>>> 1 and 1
1
>>> 'a' and 'b'
'b'
>>> 'a' or 'b'
'a'
因为
>>> not True
False
所以
>>> not 'b'
False
int float 0会被认为是False 非0 表示True
>>> not 0.1
False
空字符串
>>> not ''
True
>>> not '0' 这里的'0' 不少0 是字符串
False
[]空的列表是False , True
>>> not []
True
>>> not [1,2]
False
tuple set dict 同样遵循[] 规则
一个有元素的列表和一个没有元素的列表
>>> [1] or []
[1]
>>> []or[1]
[1]
>>> [1] or (not [1,2])
[1]
会得到True那个 未必会出现布尔
>>> 'a' and 'b'
'b'
>>> '' and 'b'
''
总结-------------
not:
>>> not 0
True
not 会返回 True
and:
and 是且的意思 如果有两个条件都true 结果才能TRUE
>>> 1 and 0
0
>>> 0 and 1
0
>>> 1 and 2
2
>>> 2 and 1
1
如果两个都是,就取第二个数(类似搬箱子,你给我一个箱子我检查可用,再给我第二箱子,我检查可用。那么你要箱子时候,我会把上面那个箱子还给你。)
or:
>>> 0 or 1
1
>>> 1 or 0
1
>>> 1 or 2
1
>>> 2 or 1
2