1、算术运算符
算术运算符的优先级由高到低的是:
第-级:幂运算
第二级:乘法、除法、整除、取余
第三级:加法、减法
print('----------------------算术运算符---------------------------')
print(2 + 1) # 加法运算(结果为3)
print(2 - 1) # 减法运算(结果为1)
print(2 * 1) # 乘法运算(结果为2)
print(2 / 1) # 结果有小数,除法运算(结果为2.0)
print(1 / 2) # 结果有小数,除法运算(结果为0.5)
print(10 // 3) # 结果没有小数,整除运算(结果为3)
print(11 % 2) # 取余运算(结果为1)
print(2 ** 3) # 幂运算,表示2的3次方 2*2*2(结果为8)
print(2 ** 4) # 幂运算 ,表示2的4次方,2*2*2*2(结果为16)
print('-------------------')
print(9 // 4) # 两正的整数公式,直接取整(结果为2)
print(-9 // -4) # 两负的整数公式,直接取整(结果为2)
print(9 // -4) # 一正一负的整数公式,向下取整(结果为-3)
print(-9 // 4) # 一正一负的整数公式,向下取整(结果为-3)
print('-------------------')
print(9 % 4) # (结果为1)
print(-9 % -4) # (结果为-1)
print(-9 % 4) # 公式:公式:余数=被除数-除数*商 -9-(4)*(-3)(结果为3)
print(9 % -4) # 公式:余数=被除数-除数*商 9-(-4)*(-3)(结果为-3)
2、赋值运算符:
print('----------------------赋值运算符---------------------------')
# 执行顺序 从左到右
print('------------执行顺序-----------')
i = 3 + 4
print(i) # (结果为7)
print('------------链式赋值-----------')
# 支持链式赋值
# 链式赋值 a,b,c的id都是一样
a = b = c = 20
print(a, id(a)) # (结果为20 140735965527712)
print(b, id(b)) # (结果为20 140735965527712)
print(c, id(c)) # (结果为20 140735965527712)
print('------------参数赋值-----------')
# 支持参数赋值
a = 20
print(a) # (结果为20)
a += 30
print(a) # a=a+30用a加上结果值(结果为50)
a -= 10
print(a) # a=a-10用a减去结果值(结果为40)
a *= 10
print(a) # a=a*10用a乘以结果值(结果为400)
a /= 10
print(a) # a=a/10用a除以结果值(结果为40.0)
a %= 13
print(a) # a=a%10用a除以结果值(结果为1.0)
# 支持系列包赋值,参数和值的个数要一致
print('------------系列解包赋值-----------')
a, b, c = 10, 20, 30
print(a) # (结果为10)
print(b) # (结果为20)
print(c) # (结果为30)
a, b = b, a # 交换两个变量值
print(a) # (结果为20)
print(b) # (结果为10)
3、比较运算符:
# 比较的是值,结果只能是True或者False
print('------------值比较--------------')
a, b = 10, 20
print('a>b吗?', a > b) # 大于(结果为False)
print('a<b吗?', a < b) # 小于(结果为True)
print('a>=b吗?', a >= b) # 大于等于(结果为False)
print('a<=b吗?', a <= b) # 小于等于(结果为True)
print('a==b吗?', a == b) # 相等(结果为False)
print('a!=b吗?', a != b) # 不相等(结果为True)
print('------------对象比较--------------')
a, b = 256, 256
c, d = 10222, 10222
print(a == b) # (结果为True) , 判断的只是a与b的value值
print(c == d) # (结果为True) , 判断的只是a与b的value值
print(a is b) # (结果为True) , 值一样,id也一样。当值小于等于256时,ID就一样
print(c is d) # (结果为False) , 值一样,id不一样。当值大于256时,ID就不一样
print(id(c)) # (结果为1927237133392)
print(id(d)) # (结果为1927231882448)
list1 = [11, 22, 33, 44]
list2 = [11, 22, 33, 44]
print(list1 == list2) # (结果为True)因为两个列表的内容相同
print(list1 is list2) # (结果为False)因为两个列表是不同的对象
print('------------对象的id比较--------------')
c, d = 10, 10
list1 = [11, 22, 33, 44]
list2 = [11, 22, 33, 44]
print(id(c)) # (结果为140735965527392)
print(id(d)) # (结果为140735965527392)
print(id(list1)) # (结果为2522028462600)
print(id(list2)) # (结果为2522028463112)
print(c is not d) # (结果为False) c的id和值与b都一样,判断是假的
print(list1 is not list2) # (结果为True) list1的id与list2的id是不相等的
4、逻辑运算符:
print('----------------------逻辑运算符---------------------------')
print('------------and 并且---------------')
# 布尔运算
# and 代表并且,只有2个都为True才为True,若有一个不满足,结果都为False
a, b = 1, 2
print(a == 1 and b == 2) # (结果为True) True and True-->True
print(a == 1 and b < 2) # (结果为False) True and False-->False
print(a != 1 and b == 2) # (结果为False) False and True-->False
print(a != 1 and b != 2) # (结果为False) False and False-->False
print(a == 1 and 10/0) # 第一个结果为false就不会运算第二个(结果为False) False and 报错-->False
print('------------or 或者---------------')
# or 代表或者,有一个满足条件都为True,只有2个都为False才为False
a, b = 1, 2
print(a == 1 or b == 2) # (结果为True) True and True-->True
print(a == 1 or b < 2) # (结果为True) True and False-->True
print(a != 1 or b == 2) # (结果为True) False and True-->True
print(a != 1 or b != 2) # (结果为False) False and False-->False
print(a == 1 and 10/0) # 第一个结果为True就不会运算第二个(结果为True) True and 报错-->True
print('------------not 对bool类型操作去反---------------')
# not 取相反值
f1 = True
f2 = False
print(not f1) # (结果为False)
print(not f2) # # (结果为True)
print('------------in 与 not in---------------')
# in 判断是否存在,not in 判断是否不在
s = 'helloworld'
print('w' in s) # (结果为True) 因为字符w在helloworld里面,所以是对的
print('k' in s) # (结果为False)因为字符k不在helloworld里面,所以是错的
print('k' not in s) # (结果为True)因为字符k不在helloworld里面,所以是对的
5、位运算符:
位运算符把数字看作二进制数来进行计算的。
位与:只有当两个相应的二进制位都为 1 时,结果的对应位才为 1,否则为 0
位或:只要两个相应的二进制位中至少有一个为 1,结果的对应位就为 1,否则为 0。
位异或:当两个相应的二进制位相同(00或11),结果的对应位取为 0,其它为 1
位取反:只能计算一位数。位数取反,若0取1,若1取0
左移位:运算 (<<)是将一个二进制数向左移动指定的位数,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充。
右移位:运算 (>>)是将一个二进制数向右移动指定的位数,右边(低位端)溢出的位被丢弃,左边(高位端)的空位端,如果最高位是0(正数)左侧空位填0,如果最高位是1(负数),左侧空位填1。
print('----------------------位运算符---------------------------')
print('------------位与&---------------')
# 使用了按位与(bitwise AND)运算符 &。按位与运算符对两个操作数的每一位执行逻辑与操作。
# 具体来说,只有当两个相应的二进制位都为 1 时,结果的对应位才为 1,否则为 0
print(4 & 8) # 代表(结果为0)
print('------------位或|---------------')
# 使用了按位或(bitwise OR)运算符 |。按位或运算符对两个操作数的每一位执行逻辑或操作。
# 具体来说,只要两个相应的二进制位中至少有一个为 1,结果的对应位就为 1,否则为 0。
print(4 | 8) # (结果为12)
print('------------位异或^---------------')
# 当两个相应的二进制位相同(00或11),结果的对应位取为 0,其它为 1
print('按位异或运算符:', 4 ^ 8) # (结果为12)
print('------------位取反~---------------')
# 只能计算一位数。位数取反,若0取1,若1取0
print('按位取反运算符:', ~8) # (结果为-9)
print('------------左移运算符<<---------------')
# 高位移除舍弃,低位补0
# 使用了左移(left shift)运算符 <<。左移运算符将一个数的二进制表示向左移动指定的位数,并在右侧填充零。
print(4 << 2) # (结果为8) 代表4的二进制,向左移动1位。相当于4*2*2
print('------------右移运算符>>---------------')
# 低位移除舍弃,高位补0
# 使用了右移(right shift)运算符 >>。右移运算符将一个数的二进制表示向右移动指定的位数,并在左侧填充零。
print(4 >> 2) # (结果为3) 代表4的二进制,向右移动1位。相当于4//2 ,2//2