目录
- 数字运算:+、-、*、/、//(整除)、%(取余)、**(幂次方)
- 赋值运算:+=、-=、*=、/=、**=、//=、%=
- 逻辑运算:and、or、not
- 比较运算:==、!=、>、<、>=、<=
- 关系运算:in/not in、is/is not
- 位运算:& 、| 、 ^ (异或) 、 ~ (取反) 、 >> (右移) 、 <<(左移)
- and和&的区别
1、数字运算
+、-、*、/、//(整除)、%(取余)、**(幂次方)
>>> 1 + 2 # 加
3
>>> 5 - 2 # 减
3
>>> 2 * 3 # 乘
6
>>> 6 / 3 # 除
2.0
>>> 5 // 2 # 整除(商往小的取)
2
>>> -9 // 2 # 整除(商往小的取)
-5
>>> 5 % 2 # 取余
1
>>> 2 ** 3 # 幂次方
8
2、赋值运算
+=、-=、*=、/=、**=、//=、%=
>>> a=10
>>> b=15
>>> a += 2 # a=a+2,即a=10+2=12
>>> print(a)
12
>>> b -= 1 # b=b-1,即b=15-1=14
>>> print(b)
14
>>> b //= 2 # b=b//2,即b=14//2=7
>>> print(b)
7
>>> a **= 2 # a=a**2,即a=12**2=144
>>> print(a)
144
>>> a *= 2 # a=a*2,即a=144*2=288
>>> print(a)
288
>>> b /= 2 # b=b/2,即b=7/2=3.5
>>> print(b)
3.5
>>> b %= 2 # b=b%/2,即b=3.5%2=1.5
>>> print(b)
1.5
3、逻辑运算 — 结果为布尔值(0为False,非0为True)
- and:先判断第一个数是否为0,若为0,则结果为0;否则看第二个数,不管第二个数是多少,输出结果都是第二个数
- or:先判断第一个数是否为0,不为0,则输出第一个数;若为0,则看第二个数,不管第二个数是多少,输出结果都是第二个数
- not:非0的数,结果为False;not 0,结果为True
#and运算是与运算,只有所有都为True,and运算结果才是True
>>> 1 and 2
2
>>> 0 and 2
0
>>> 5 > 3 and 3 > 1
True
#or运算是或运算,只要其中有一个为True,or运算结果就是True
>>> 1 or 2
1
>>> 0 or 3
3
>>> 5>3 or 1>3
True
#not运算是非运算,它是一个单目运算符,把True变成False,False变成True
>>> not 2
False
>>> not 0
True
>>> not 1>2
True
4、比较运算
==、!=、>、<、>=、<=
>>> 1 == 1
True
>>> 1 != 2
True
>>> 1 > 2
False
>>> 2 < 3
True
>>> 2 >= 1
True
>>> 3 <= 3
True
5、关系运算
- in、not in:判断的是 在与不在,返回的是布尔值
- is、is not:判断的是 是否全等,不仅值相等,内存地址也要相等
>>> 1 in (1,2,4)
True
>>> 2 not in (1,3,4)
True
>>> a=1
>>> b=1
>>> a is b
True
>>> c=[1,2]
>>> d=[1,2]
>>> c is d #'is'比较的是所有属性,包括地址,值等
False
>>> c==d #'=='比较的是值
True
由此也可证明数字类型是不变量,列表类型是变量
6、位运算
- &:二进制按位与
- | :二进制按位或
- ^ : 二进制按位异或
- ~ : 取反,数值前面添个负号,在减1(先逐位取反,之后除去符号位,在逐位取反,末位加1)
- >> : 右移 n 位,值缩小为原来的 1/2^n 倍
- << :左移 m 位,值增大为原来的 2^m 倍
>>> a=24 # 0001 1000
>>> b=10 # 0000 1010
>>> a & b # 0000 1000 = 8
8
>>> a | b # 0001 1010 = 26
26
>>> a ^ b # 0001 0010 相同为0,不同为1
18
>>> ~ a # 前面先加 '-',再减 1(-24-1=-25)
-25
>>> a >> 2 # 右移两位,缩小4倍
6
>>> a << 3 # 左移三位,扩大为原来的2的3次方倍(8)
192
7、and和&的区别
首先 & 是位运算符,and 是逻辑运算符(结果为布尔值,0为 True,非0为 False),所以在选择结构中常用 'and'。
举例1: 设a和b是两个整数,a=1,b=2
a&b 分析:a以二进制表示就是01,b以二进制表示就是10,故&的运算结果就是00,即十进制的0
a and b 分析:1是真,2也是真,故a and b是True(非0)
>>> a=1
>>> b=2
>>> a & b
0
>>> a and b
2