"""
算数运算符:
优先级高: ** * / % //
优先级低: + -
"""
# m ** n --> m的n次方
print(2 ** 4)
# 16
# m * n --> m乘以n
print(2 * 4)
# 8
# m / n --> m除以n
print(18 / 6)
# 3
# m % n --> m除以n的余数
print(18 % 12)
# 6
# m // n --> m整除n
print(18 // 4)
# 4
# m + n --> m加n
print(12 + 4)
# 16
# m - n --> m减n
print(12 - 4)
# 8
# 比较运算符:> >= == <= < !=
num_01 = 12
num_02 = 24
# > --> 大于
print(num_01 > num_02)
# False
# >= --> 大于等于
print(num_01 >= num_02)
# False
# == --> 等于
print(num_01 == num_02)
# False
# <= --> 小于等于
print(num_01 <= num_02)
# True
# < --> 小于
print(num_01 < num_02)
# True
# != --> 不等于
print(num_01 != num_02)
# True
"""
逻辑运算符: 优先级从高到低
not 取反 [与紧跟其后的条件是一个整体]
and 有假则假
or 有真则真
通常写程序时,如果混用,加上()
"""
print(not 12 > 12)
# True
print(12 < 3 and 6 < 18)
# False
print(12 < 3 or 6 < 18)
# True
# 短路运算
print(10 > 3 and 0 and '很好')
print(12 and None or 'A' or 24)
# 输出结果不是单纯的True或False 返回停止运算时的结果
# and:遇见假就停止 有假则假 or:遇见真就停止运算 有真则真
"""
成员运算符:m in n [推荐使用]
m not in n
判断m是否存在于n中
"""
print('s' in 'string')
# True
"""
身份运算符:is 判断id是否相等
变量值的三个特征:
id:根据内存地址,计算出的一个号码
type:变量所引用数据的数据类型
value:值本身
is 与 ==
is:用于比较两个变量指向的内存地址是否一致
==:比较两个变量的值是否相等
"""
# 整数常量池范围:[-5, 256]
num_01 = 12
num_02 = 12
print(num_01 is num_02)
# True
print(num_01 == num_02)
# True
num_03 = 1314
num_04 = 1314
print(num_03 is num_04)
# False
# PyCharm做了处理 在终端查看
print(num_03 == num_04)
# True
"""
赋值运算符:
普通赋值:=
增量赋值:*= /= %= //= += -=
链式赋值:x = y = z = 12
交叉赋值:m,n = n,m
解压赋值:在同一行,使用多个变量来接收多个数据
"""
# 解压赋值
# 变量名与数据一一对应
num1, num2, num3 = [11, 22, 33]
# 只取前两个数值,其余值被*存成列表
num4, num5, *_ = [11, 22, 33, 44]
# 只取后两个数值,其余值被*存成列表
*_, num6, num7 = [11, 22, 33, 44, 55, 66]