运算符:
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如1+2,其中数字1和2就是操作数而+号就是运算符。
Python中运算符包括:算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符、运算符优先级。
假设变量a=10,b=20然后用Python中所有的运算符进行操作:
Python算术运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b 输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除 - x除以y | b / a 输出结果 2 |
% | 取模 - 返回除法的余数 | b % a 输出结果 0 |
** | 幂 - 返回x的y次幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
// | 取整除 - 返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
1 #!/usr/bin/env python3 2 3 a = 10 4 b = 20 5 6 c = a + b #两数相加 7 print(c) 8 9 c = a - b #两数相减 10 print(c) 11 12 c = a * b #两数相乘 13 print(c) 14 15 c = a / b #两数相除 16 print(c) 17 18 c = a % b #取模,返回除法的余数 19 print(c) 20 21 c = a ** b #幂(次方) 22 print(c) 23 24 c = a // b #取整数,返回商的整数部分 25 print(c)
运行结果如下:
1 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day02/Arithmetic_operators.py 2 30 3 -10 4 200 5 0.5 6 10 7 100000000000000000000 8 0 9 10 Process finished with exit code 0
Python比较运算符
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
<> | 不等于 - 比较两个对象是否不相等 | (a <> b) 返回 true。这个运算符类似 != 。 |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 | (a < b) 返回 true。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
1 #!/usr/bin/env python3 2 3 a = 10 4 b = 20 5 c = 0 6 7 if (a == b): #等于 8 print('a等于b') 9 else: 10 print('错误') 11 12 if (a != b): #不等于 13 print('a不等于b') 14 else: 15 print('错误') 16 17 # if (a <> b): #不等于(python2.x) 18 # print('a不等于b') 19 # else: 20 # print('错误') 21 22 if (a > b): #大于 23 print('a大于b') 24 else: 25 print('错误') 26 27 if (a < b): #小于 28 print('a小于b') 29 else: 30 print('错误') 31 32 if (a >= b): #大于等于 33 print('a大于等于b') 34 else: 35 print('错误') 36 37 if (a <= b): #小于等于 38 print('a小于等于b') 39 else: 40 print('错误')
运行结果:
1 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day02/bijiaoyunsuanfu.py 2 错误 3 a不等于b 4 错误 5 a小于b 6 错误 7 a小于等于b 8 9 Process finished with exit code 0
*注意"<>"这个运算符(不等于)在Python3.x中已经移除了!比较结果如下:
1 bogon:~ zk$ python 2 Python 2.7.10 (default, Oct 23 2015, 19:19:21) 3 [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin 4 Type "help", "copyright", "credits" or "license" for more information. 5 >>> a = 10 6 >>> b = 20 7 >>> if (a <> b): 8 ... print('yes') 9 ... else: 10 ... print('no') 11 ... 12 yes 13 >>> exit() 14 bogon:~ zk$ python3 15 Python 3.5.1 (v3.5.1:37a07cee5969, Dec 5 2015, 21:12:44) 16 [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 17 Type "help", "copyright", "credits" or "license" for more information. 18 >>> a = 10 19 >>> b = 20 20 >>> if (a <> b): 21 File "<stdin>", line 1 22 if (a <> b): 23 ^ 24 SyntaxError: invalid syntax #语法错误在Python3.x中没有这个运算符!
Python赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
1 #!/usr/bin/env python3 2 3 a = 10 4 b = 20 5 c = 0 6 7 c = a + b #把a+b的变量和赋值给c变量 8 print(c) 9 10 c += a #意思是c = c + a 11 print(c) 12 13 c -= a #意思是c = c - a 14 print(c) 15 16 c *= a #意思是c = c * a 17 print(c) 18 19 c /= a #意思是c = c / a 20 print(c) 21 22 c %= a #意思是c = c % a 23 print(c) 24 25 c **= a #意思是c = c ** a 26 print(c) 27 28 c //= a #意思是c = c // a 29 print(c)
运算结果:
1 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day02/运算符/赋值运算符.py 2 30 3 40 4 30 5 300 6 30.0 7 0.0 8 0.0 9 0.0 10 11 Process finished with exit code 0
Python位运算符
按位运算符是把数字看成二进制来计算的。
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
1 #!/usr/bin/env python3 2 3 a = 10 4 b = 60 5 c = 0 6 7 #一下是数字转成二进制的方法 8 #例如取10,60数字的二进制 9 #128 64 32 16 8 4 2 1 10 #0 0 0 0 1 0 1 0 = 10 11 #0 0 1 1 1 1 0 0 = 60 12 #0 0 0 0 1 0 0 0 = 8 13 # 14 # 所以数字10,60,的二进制分别为 15 # 10 = 1010 16 # 60 = 111100 17 18 c = a & b #按位与运算符:二进制位置中相对应的为1的则为1,否则为0 19 print(c) 20 #128 64 32 16 8 4 2 1 21 #0 0 0 0 1 0 1 0 = a = 10 22 #0 0 1 1 1 1 0 0 = b = 60 23 #0 0 0 0 1 0 0 0 = c = a & b = 8 24 25 c = a | b #按位或运算符:只要对应的位置是1的时候就是1 26 print(c) 27 #128 64 32 16 8 4 2 1 28 #0 0 0 0 1 0 1 0 = a = 10 29 #0 0 1 1 1 1 0 0 = b = 60 30 #0 0 1 1 1 1 1 0 = c = a | b = 62 31 32 c = a ^ b #按位异或运算符:就是相对应的位置不一样的时候等于1 33 print(c) 34 #128 64 32 16 8 4 2 1 35 #0 0 0 0 1 0 1 0 = a = 10 36 #0 0 1 1 1 1 0 0 = b = 60 37 #0 0 1 1 0 1 1 0 = c = a ^ b = 54 38 39 c = ~ a #按位取反运算符:就是把相对应的位置反过来(太极图黑白!) 40 print(c) 41 #原理 42 #+128 +64 +32 +16 +8 +4 +2 +1 43 #0 0 0 0 1 0 1 0 = 10(相加) 44 # 45 #~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ (阴阳界) 46 #1 1 1 1 0 1 0 1 = 47 #-128 -64 -32 -16 -8 -4 -2 -1 = c = ~ a = -11(相减) 48 49 c = a << 2 #做移动运算符:往左边移动两位 50 print(c) 51 #128 64 32 16 8 4 2 1 52 #0 0 0 0 1 0 1 0 = a = 10 53 #0 0 1 0 1 0 0 0 = c = a << 2 = 40 54 55 c = a >> 2 #右移动运算符:往右边移动两位 56 print(c) 57 #128 64 32 16 8 4 2 1 58 #0 0 0 0 1 0 1 0 = a = 10 59 #0 0 0 0 0 0 1 0 = c = a >>2 = 2
运算结果:
1 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day02/运算符/位运算符.py 2 8 3 62 4 54 5 -11 6 40 7 2 8 9 Process finished with exit code 0
Python逻辑运算符
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
1 #!/usr/bin/env python3 2 3 a = 20 4 b = 20 5 6 print(a and b) #如果a是false返回值就是false,如果a是true返回值就是b变量的值 7 8 print(a or b) #如果a是false返回值就是b变量的值,如果a是true返回值就是a的值 9 10 print(not a) #如果a是true返回值就是false,如果a是false返回值就是true
运算结果:
/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day02/运算符/逻辑运算符.py 20 20 False Process finished with exit code 0
Python成员运算符
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
1 #!/usr/bin/env python3 2 3 a = 10 4 b = 3 5 li = [1,2,3,4,5,6,7,8,9,0] 6 7 print(a in li) #如果a在li列表中返回true,否则返回false 8 print(b in li) 9 10 print(a not in li) #如果ab不在li列表中返回tru,否则返回fals 11 print(b not in li)
运算结果:
1 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day02/运算符/成员运算符.py 2 False 3 True 4 True 5 False 6 7 Process finished with exit code 0
Python身份运算符
运算符 | 描述 | 实例 |
---|---|---|
is | is是判断两个标识符是不是引用自一个对象 | x is y, 如果 id(x) 等于 id(y) , is 返回结果 1 |
is not | is not是判断两个标识符是不是引用自不同对象 | x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1 |
1 #!/usr/bin/env python3 2 3 a = 10 4 b = 20 5 c = 20 6 7 print(a is b) #a,b有相同的标示返回true否则返回false 8 9 print(b is c) #b,c有相同的标示返回true否则返回false 10 11 print(id(a) == id(b)) #a,b有相同的标示返回true否则返回false 12 13 print(id(b) == id(c)) #b,c有相同的标示返回true否则返回false 14 15 print(a is not b) #a,b有相同的标示返回false否则返回true 16 17 print(b is not c) #b,c有相同的标示返回false否则返回true 18 19 print(id(a) != id(b)) #a,b有相同的标示返回false否则返回true 20 21 print(id(b) != id(c)) #b,c有相同的标示返回false否则返回true
运算结果:
1 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day02/运算符/身份运算符.py 2 False 3 True 4 False 5 True 6 True 7 False 8 True 9 False 10 11 Process finished with exit code 0