# 运算符
# 算数运算符
a = 10
b = 21
print(a + b) # 31
print(a - b) # -11
print(a * b) # 210
a = 10
b = 5
# / (求得的结果永远为小数)
print(a / b) # 2.0
print(b % a) # 5
# // 被除数或者除数如果是小数,那么求得的结果后要加 .0
a = 11.0
b = 5
print(a // b) # 2.0
# 比较运算符
print(a == b) # False
print(a >= b) # False
print(a <= b) # True
print(a != b) # True
print(a > b) # False
print(a < b) # True
# 赋值运算符
# c = a + b
# print(c) # 31
# a += b
# print(a) # 31
# a -= b
# print(a) # -11
# a *= b
# print(a) # 210
# a /= b
# print(a) # 0.47619047619047616
# b %= a
# print(b) # 1
# b //= a
# print(b) # 2
a = 2
b = 3
a **= b
print(a) # 8
# 身份运算符(is 和 is not 检测两个数据在内存当中是否是同一个值)
# 整型
var1 = 100
var2 = 100
print(id(var1), id(var2)) # 4307965392 4307965392
print(var1 is var2) # True
var1 = -5
var2 = -5
print(var1 is var2) # True
var1 = -6
var2 = -6
print(var1 is var2) # True
var1 = -100
var2 = -100
print(var1 is var2)
# 浮点型
var1 = 5.3
var2 = 5.3
print(var1 is var2) # True
var1 = -5.3
var2 = -5.3
print(var1 is var2)
print(var1 is not var2) # False
# 复数
var1 = 3 - 90j
var2 = 3 - 90j
print(var1 is var2)
# 布尔值
var1 = True
var2 = True
print(var1 is var2)
# 相同的字符串或元组,地址相同
var1 = ()
var2 = ()
print(var1 is var2)
var1 = (20,)
var2 = (20,)
print(var1 is var2)
var1 = [1, 2]
var2 = [1, 2]
print(var1 is var2) # False
var1 = '123'
var2 = '123'
print(var1 is var2) # True
# 逻辑运算符 and or not
# and 逻辑与
"""全真则真,一假则假"""
res = True and True
print(res) # True
res = True and False
print(res) # False
res = False and True
print(res) # False
res = False and False
print(res) # False
# or 逻辑或
"""一真则真,全假则假"""
res = True or True
print(res) # True
res = True or False
print(res) # True
res = False or True
print(res) # True
res = False or False
print(res) # False
# not 逻辑非
res = not True
print(res) # False
res = not False
print(res) # True
# 逻辑短路
"""后面的代码不执行"""
"""
现象有两种:
1.True or 表达式
2.False and 表达式
计算顺序:
首先脑补当前这个布尔值是真还是假
然后看一下这个式子是否短路
如果短路返回前者
反之,返回后者
"""
res = 5 or 6
print(res) # 5
res = 5 and 6
print(res) # 6
res = 0 and 6
print(res) # 0
res = 0 or 6
print(res) # 6
# 逻辑运算符优先级
"""() > not > and > or"""
# 成员运算符 : in 和 not in(针对容器类型数据)
"""要求字符串是连续的片段"""
strvar = "沙尘暴的天气终于过了"
res = "沙" in strvar
print(res) # True
res = "沙尘暴" in strvar
print(res) # True
res = "沙了" in strvar
print(res) # False
# 针对于字典dict
"""针对于字典,判断的是键不是值"""
dictvar = {"123": 456, "789": 0}
res = "123" in dictvar
print(res) # True
res = 456 in dictvar
print(res) # False
# 位运算
# 运算符优先级
# 算数运算符>位运算>比较运算符>身份运算符>成员运算符>逻辑运算符>赋值运算符