一、运算符分类:
1、算术运算符:主要用于两个对象之间的加减乘除
2、比较运算符:用于两个对象之间的比较(大于、等于、小于等)
3、赋值运算符:用于对象赋值,将右边的值赋值给左边。值可以是数字、字符串、列表等
4、逻辑运算符:用于逻辑计算:如与(and)或(or)非(not)等
5、位运算符:将数字按照二进制来计算
6、成员运算符:判断一个对象是否包含另一个对象
7、身份运算符:判断是不是引用自一个对象
8、运算优先级
二、运算符详解
2.1、算术运算符
示例:
a = 5
b = 6
c = a + b # 加法
d = b - a # 减法
e = a * b # 乘法
f = a / b # 除法
g = a % b # 取余
h = a // b # 取整
i = a**b # 幂,a的b次方
print("a + b = ", c)
print("b - a = ", d)
print("a * b = {}".format(e))
print("a / b = ", f)
print("a % b = ", g)
print("a // b =", h)
print("a**b = ", i)
输出:
a + b = 11
b - a = 1
a * b = 30
a / b = 0.8333333333333334
a % b = 5
a // b = 0
a**b = 15625
除法中所得到的值有很多位小数点,让我们使其保留自己想要的小数点吧。
如保留两位小数:
print("a / b = %.2f" % f) # 保留两位小数
print("a / b = {:.2f}".format(f)) # 保留两位小数
print("a / b = ", round(f, 2)) # 保留两位小数
2.2、比较运算符
示例:
a = 5
b = 6
print("a与b是否相等:", a == b)
print("a与b是否相等:", a != b)
print("a是否大于b:", a > b)
print("a是否大于等于b:", a > b)
print("a是否小于b:", a < b)
print("a是否小于等于b:", a < b)
2.3、赋值运算符
a = 5
b = 6
# 左边是变量,右边是表达式或者是字符串、列表、元组等,
c = a + b # 右边表达式自动计算
print("a + b的值为:", c)
b += a #等效为 b = b + a
print("b += a的值为:", b)
b -= a # 等效为 b = b - a
print("b += a的值为:", b)
b *= a # 等效为 b = b * a
print("b *= a的值为:", b)
b /= a # 等效为 b = b / a
print("b /= a的值为:", b)
b %= a # 等效为 b = b % a
print("b %= a的值为:", b)
b **= a # 等效为 b = b ** a
print("b **= a的值为:", b)
b //= a # 等效为 b = b // a
print("b //= a的值为:", b)
输出:
a + b的值为: 11
b += a的值为: 11
b += a的值为: 6
b *= a的值为: 30
b /= a的值为: 6.0
b %= a的值为: 1.0
b **= a的值为: 1.0
b //= a的值为: 0.0
2.4、逻辑运算符
位运算符就是把数字看作二进制来计算的
a = 60 # 60转化成二进制0011 1100
b = 13 # 13转化成二进制 0000 1101
c = a & b # 参与的两个值二进制位如果相应的值都为1,则结果为1,否则都为0
"""
0011 1100
0000 1101
----------
0000 1100 => 1 * 2**3+ 1* 2**2 + 0 * 2**1 + 0 * 2**0 = 8 + 4 =12
"""
print("c的值为:", c)
d = a | b # 参与的两个值二进制位只要其中有一个为1,则结果为1,否则都为0
"""
0011 1100
0000 1101
----------
0011 1101
"""
print("d的值为:", d)
e = a ^ b # 异位, a 和 b中的二进位是相异的时候,结果为1
"""
0011 1100
0000 1101
----------------
0011 0001
"""
print("e的值为:", e)
f = ~a # 取反,就是把0变为1,把1变为0
"""
0011 1100
--------------
1100 0011
"""
print("f的值为:", f)
g = a << 2 # a的二进位向左移动两位
"""
0011 1100
--------------
1111 0000
"""
print("g的值为:", g)
h = a >> 2 # a的二进位向右移动两位
"""
0011 1100
----------
0000 1111
"""
print("h的值为:", h)
输出结果:
c的值为: 12
d的值为: 61
e的值为: 49
f的值为: -61
g的值为: 240
h的值为: 15
2.5、逻辑运算符
示例:
a = 1
b = 0
if a and b:
print("a和b都为true")
else:
print("a和b其中至少有一个不为true")
if a or b:
print("a和b其中至少有一个为true")
else:
print("a和b都不为true")
if not(a and b):
print("a和b其中至少有一个不为true")
else:
print("a和b都为true"
输出:
a和b其中至少有一个不为true
a和b其中至少有一个为true
a和b其中至少有一个不为true
2.6、成员运算符
a = 1
b = 10
lst = [1, 2, 3, 4, 5] # 可以是列表、字符串、元组
if a in lst: # 它返回的是一个布尔类型
print("a在lst列表里")
else:
print("a不在lst列表里")
if b not in lst:
print("b不在lst列表里")
else:
print("b在lst列表里")
输出:
a在lst列表里
b不在lst列表里
2.7、身份运算符
a = 1
b = 10
print("内存地址为:", id(a))
print("内存地址为:", id(b))
if a is b: # 返回的是布尔类型,a is b 等同于 id(a) == id(b),即内存地址一样
print("a和b来自同一个标识里")
else:
print("a和b没有相同的标识")
if a is not b:
print("a和b没有相同的标识")
else:
print("a和b来自同一个标识里")
通过将a和b分别为整数、字符串、元组、列表、字典时候,我们可以得出a和b值都是一样,其a和b在整数、字符串情况下,a is b返回是True,在元组、字典、列表的情况下 a is b 返回的是False。
is 和 == 的区别
is是用来判断两个对象的内存地址是否一样,通常我们可以用id(对象名)这个函数来查看我们对象内存地址。而==是用来判断两个对象的值是否相等。