AI学习之Python基础4:运算符

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值