逻辑运算符
运算符 |
描述 |
and |
布尔”与”。如果x为False,x and y返回False,否则它返回y的计算值。 |
or |
布尔”或”。如果x是True,x or y它返回x的值,否则它返回y的计算值。 |
not |
布尔”非”。如果x为True,返回False 。如果x为 False,它返回 True。 |
例如:
1
2
3
4
5
6
|
f = False
t = True
print("f and t 的值:", f and t)
print("f or t 的值:", f or t)
print("not f 的值:",not f)
print("not t 的值:",not t)
|
执行以上程序会输出如下结果:
1
2
3
4
|
f and t 的值: False
f or t 的值: True
not f 的值: True
not t 的值: False
|
逻辑运算符优先级
由高到低排列 |
描述 |
not |
- |
and |
- |
or |
- |
例如:
1
2
3
|
f = False
t = True
print("t and not f 的值:", t and not f) #先计算not f,结果为True,然后再计算t and True,最后结果是True。
|
1
2
3
4
5
6
7
|
a = 1
b = 5
c = 4
result1 = a or b and c # and优先级高,先算5 and 4, 5为真, 值为4. 再算1 or 4, 1 为真,值为1
result2 = (a or b) and c #()优先级高,先算1 or 5, 1为真, 值为1. 再算1 and 4, 1为真,值为4
print(result1) # 1
print(result2) # 4
|
逻辑运算符短路计算
and 和 or都是短路计算。
A and B
如果A是False的话,不计算B的值,直接返回结果False。
A or B
如果A是True的话,不计算B的值,直接返回结果True。
例如:
1
2
3
4
5
6
|
t = True
f = False
x = 10
y = 0
print("t or x/y 的值:", t or x/y ) #不计算x/y,因此也不会报不能被0除的异常
print("f and x/y 的值:", f and x/y ) #不计算x/y,因此也不会报不能被0除的异常
|
执行以上程序会输出如下结果:
1
2
|
t or x/y 的值: True
f and x/y 的值: False
|
位运算符
只有int类型能进行位计算。
运算符 |
描述 |
| |
按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 |
^ |
按位异或运算符:当两对应的二进位相异时,结果为1 |
& |
按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位结果为1,否则为0 |
<< |
左移动运算符:运算数的各二进位全部左移若干位,由”<<“右边的数指定移动的位数,高位丢弃,低位补0。 |
>> |
右移动运算符:把”>>“左边的运算数的各二进位全部右移若干位,”>>“右边的数指定移动的位数 |
~ |
按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于-x-1 |
例如:
1
2
3
4
5
6
7
8
9
|
x = 11
y = 2
print("x | y 的值:", x | y)
print("x ^ y 的值:", x ^ y)
print("x & y 的值:", x & y)
print("x << y 的值:", x << y)
print("x >> y 的值:", x >> y)
print("~x 的值:", ~x)
print("~y 的值:", ~y)
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
7
|
x | y 的值: 11
x ^ y 的值: 9
x & y 的值: 2
x << y 的值: 44
x >> y 的值: 2
~x 的值: -12
~y 的值: -3
|
注意: <<,>>后跟的必须是正整数,复数的话,报错,抛出ValueError异常。
例如:
1
2
3
|
x = 11
y = -2
print ("x << y 的值:", x << y)
|
执行以上程序会输出如下结果:
1
2
3
4
|
Traceback (most recent call last):
File "main.py", line 3, in <module>
print ("x << y 的值:", x << y)
ValueError: negative shift count
|
位运算符优先级
由高到低排列 |
描述 |
~ |
按位取反 |
<<,>> |
移位 |
& |
按位与 |
^ |
按位异或 |
| |
按位或 |
例如:
1
2
3
4
5
|
x = 11
y = 2
z = 5
print ("x | y & z 的值:", x | y & z) # 先计算y & z,结果再和x计算。
print ("(x | y) & z 的值:", (x | y) & z) # 优先先计算括号内的值(x | y) ,结果再和z计算。
|
执行以上程序会输出如下结果:
1
2
|
x | y & z 的值: 11
(x | y) & z 的值: 1
|
赋值运算符
运算符 |
描述 |
= |
简单赋值运算符 |
+= |
加法赋值运算符 |
-= |
减法赋值运算符 |
*= |
乘法赋值运算符 |
/= |
除法赋值运算符 |
%= |
取模赋值运算符 |
**= |
幂赋值运算符 |
//= |
取整除赋值运算符 |
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
a = 10 # 简单赋值运算符,将整数10赋值给变量a
b = 1 # 简单赋值运算符,将整数2赋值给变量b
b += a
print("b += a的值:", b)
b -= a
print("b -= a的值:", b)
b *= a
print("b *= a的值:", b)
b /= a
print("b /= a的值:", b)
b ** a
print("b ** a的值:", b)
b //= a
print("b //= a的值:", b)
|
执行以上程序会输出如下结果:
1
2
3
4
5
6
|
b += a的值: 11
b -= a的值: 1
b *= a的值: 10
b /= a的值: 1.0
b ** a的值: 1.0
b //= a的值: 0.0
|
成员运算符
运算符 |
描述 |
in |
如果在指定的序列中找到值返回True,否则返回False。 |
not in |
如果在指定的序列中没有找到值返回True,否则返回False。not in是in的反操作。 |
例如:
1
2
3
4
5
6
7
8
9
10
|
list = ['a','b','c']
a = 'a'
if a in list:
print("in操作:list列表包含成员'a'")
else:
print("in操作:list列表不包含成员'a'")
if a not in list:
print("not in操作:list列表不包含成员'a'")
else:
print("not in操作:list列表包含成员'a'")
|
执行以上程序会输出如下结果:
1
2
|
in操作:list列表包含成员'a'
not in操作:list列表包含成员'a'
|
转载请注明本网址。