python算术运算符顺序_Python学习系列之运算符及运算符的优先级(六)

一、Python中的运算符包括:

算术运算符

赋值运算符

比较运算符

布尔运算符

位运算符

其中算术运算符包含:标准算术运算符,取余运算符(%)、幂运算符(**)

标准运算符包括:加(+)、减(-)、乘(*)、/、整除(//)

1、Python算术运算符的使用

#加法运算

print(1+1)

#减法运算

print(4-1)

#乘法运算

print(3*2)

#除法运算

print(11/2)

#整除运算

print(11//2)

#取余运算

print(11%2)

#幂运算

print(11**2) #表示11的2次方

以上执行结果如下:

1360293-20201119113425932-201973452.png

解析:当出现除数和被除数为负数是,会有两种情况,一种是同为负数或一负一正,当一负一正时整除,会获取整数值,当同为负数时,

整除运算有负数情况举例:

print(9//4) #同为正数,取整

print(-9//-4) #同为负数,取整

print(9//-4) #一正一负整除,向下取整,除的结果是-2.25,所以结果是-3

print(-9//4) #一正一负整除,向下取整,除的结果是-2.25,所以结果是-3

执行结果如下:

1360293-20201119114751858-1770678980.png

取余运算有负数情况举例:

print(9%-4) #值为-3,计算公式:余数=被除数-除数*商 9-(-4)*(-3)=9-12=-3

print(-9%4) #值为3,计算公式:余数=被除数-除数*商 (-9)-(4)*(-3)=(-9)-(-12)=(-9)+12=3

运行结果如下图:

1360293-20201119115253250-926345361.png

2、Python赋值运算符

赋值运算符

执行顺序:右到左

支持链式赋值,如a=b=c=0

支持参数赋值,如+=、-=、*=、/=、//=、%=

支持系列解包赋值,a,b,c=10,20,30

举例:

#赋值运算符

i=3+5

print(i)

#链式赋值

a=b=c=10

print(a,id(a))

print(b,id(b))

print(c,id(c))

执行结果如下:

1360293-20201119123052059-1078885798.png

解析:1、i=3+5,首先将3+5进行运算得出8,再将8赋值给变量i

2、将a、b、c三个变量都赋值为10,这三个变量值都是10,同时指向同一个内存空间

如果将链式赋值分开写,也会是同样的结果,即都是执行同一个内存空间,该内存空间的值是10

a=10

b=10

print(a,id(a))

print(b,id(b))

执行结果如下:

1360293-20201119123428639-1285283617.png

2、参数赋值

#参数赋值

a=30

a+=20 #a=a+20

print(a,type(a))

a-=10 #a=a-10

print(a,type(a))

a*=2 #a=a*2

print(a,type(a))

a/=2 #a=a/2

print(a,type(a))

a//=2 #a=a//2

print(a,type(a))

a%=2 #a=a%2

print(a,type(a))

执行结果如下:

1360293-20201119124212596-1523143140.png

3、解包赋值

3.1 常用模式a,b,c=10,20,30,意思是将10赋值给a,将20赋值给b,将30赋值给c

举例:

a,b,c=10,20,30

print(a,b,c)

执行结果如下:

1360293-20201119130454395-915965521.png

即分别将10赋值给a,将20赋值给b,将30赋值给c

3.2 解包赋值要求=号两边的数量保持一致

举例:

a,b=10,20,30

执行结果如下:

1360293-20201119130332732-946422254.png

由此可以看出,当使用解包赋值时,两边的变量或者值不一致是会报错

3.3 解包赋值可以直接交换两个变量的值,不需要中间变量

举例:

#解包赋值可以交换两个变量的值

a,b=10,20

print('交换之前的值:',a,b)

a,b=b,a

print('交换之后的值:',a,b)

执行结果如下:

1360293-20201119130205008-2024214892.png

解析:直接将变量赋值按位置赋值给对应的变量,无需中间变量

4、Python中的比较运算符

4.1 比较运算符输出的是bool值,即是比对是对(True)还是错(False)

举例:

#比较运算符

a,b=10,20

print('a>b吗?',a>b)

print('a

print('a<=b吗?',a<=b)

print('a>=b吗?',a>=b)

print('a=b吗?',a==b)

print('a!=b吗?',a!=b)

执行结果如下:

1360293-20201119172107400-572245985.png

4.2 比较运算是比较值还是比较存储标识?

'''

一个 = 称为赋值运算符,==称为比较运算符

一个变量由三部分组成,标识、类型、值

== 比较的是值还是标识呢? 比较的是值

比较对象的标识使用 is

'''

a=10

b=10

print(a==b)

print(id(a))

print(id(b))

print(a is b)

print(a is not b)

以上代码执行结果是:

1360293-20201119174318325-729809259.png

解析:1.a和b的值相同,都是10

2.a和b的内存空间是同一个,即内存标识是同一个,因为内存中已经有一个一模一样的值的存储空间,不会再新建一个空间,而是直接将变量的标识符指向已有的内存空间,所以a和b的内存标识是一样的,所以比对结果是True

3.a和b的内存空间是同一个,所以is not比对结果是False

4.3 两个值相同的List列表会是同一个空间吗?

举例:

#比对list的值和内存空间

list1=[11,22,33,44]

list2=[11,22,33,44]

print(list1==list2)

print(list1 is list2)

print(id(list1))

print(id(list2))

执行结果如下:

1360293-20201119173624812-1868468748.png

解析:1.list1和list2的值是相同的,所以比对结果是True

2.list1和list2的内存空间id是不相同的,所以结果是False

5、bool运算符

bool运算符有:and、or、not、in、not in

1360293-20201119194853494-546180956.png

5.1、bool运算and运算

举例:

#bool运算符and运算

a,b=1,2

print(a==1 and b==2) #True and True --> True

print(a==1 and b<2) #True and False --> False

print(a!=1 and b==2) #False and True --> False

print(a!=1 and b!=2) #False and False --> False

执行结果如下图:

1360293-20201119181241219-512360739.png

解析:and运算只有当两个都是True时,才是True,只要有一个False则结果都是False。and可以理解为并且或者全部。

5.2、bool运算符or运算

举例:

#bool运算符or运算

a,b=1,2

print(a==1 or b==2) #True and True --> True

print(a==1 or b<2) #True and False --> True

print(a!=1 or b==2) #False and True --> True

print(a!=1 or b!=2) #False and False --> False

执行结果如下:

1360293-20201119181705971-1130147459.png

解析:or运算中,当其中一个运算为True时结果为True,两个值都为False时才为False。or可以理解为或。

5.3、bool运算符not运算

举例:

#bool运算符not运算,即取反

a1=True

a2=False

print(not a1)

print(not a2)

执行结果如下:

1360293-20201119182311639-950103618.png

解析:a1的值为True,取反的结果就是False,a2的值是False,取反的结果就是True

5.4 bool运算符in、not in运算,即是否在里面

举例:

#bool运算符in、not in运算,即是否在里面

a='hellworld'

print('h' in a)

print('k' in a)

print('h' not in a) #False

print('k' not in a) #True

执行结果如下:

1360293-20201119182826908-375617172.png

解析:1. h在helloworld单词里,则in运算执行结果为True,not in运算结果为False

2. k不在helloworld单词里,则执行结果为False,not in运算结果为True

6、位运算符

位运算符有位与&、位或|、左移、右移。

1360293-20201119183410754-147101579.png

6.1 按位与和按位或举例:

#位运算

print(4&8) #按位与&,同为1时结果为1,否则为0

print(4|8) #按位或|,同为0时结果为0,否则为1

执行结果为:

1360293-20201119192644080-1492959319.png

解析:1.4的二进制00000100,8的二进制是00001000,按位与的结果是00000000即0,按位或的结果是00001100即12

6.2 左右位移运算:

图解:

1360293-20201120100209683-1990427356.png

解析:4的二进制是0000100,左位移时高位溢出一位,低位少一位需要补零,4左位移的结果是00001000即是8,左位移一位相当于乘以2

8的二进制是00001000,再左位移时高位溢出一位,低位少一位需补零,8左位移的结果是00010000即16,左位移一位相当于乘以2

1360293-20201120100318862-2119254508.png

解析:4的二进制是0000100,右位移时低位截断一位,高位少一位需要补零,4右位移的结果是00000010即是2,右位移一位相当于除以2

2的二进制是00000010,再右位移时低位截断一位,高位少一位需要补零,2右位移的结果是00000001即1,右位移一位相当于除以2

代码举例:

#左右位移

print(4<<1) #4左移一位,相当于乘以2,结果是8

print(4<<2) #4左移二位,相当于乘以4,结果是16

print(4>>1) #4右移一位,相当于除以2

print(4>>2) #4右移二位,相当于除以4

执行结果如下:

1360293-20201120101556084-1663074930.png

7. 运算符的优先级

运算符优先级规则:

1、有括号先计算括号

2、优先级第二高的是算术运算符,算术运算符中优先计算乘除,再计算幂,再计算加减

3、优先级第三高的是位运算符,先计算位移,再计算按位或,最后计算按位与

4、优先级第四高的是比较运算,比较运算的结果是bool值

5、优先级最低的是bool运算,优先and和赋值运算,再执行or运算

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值