# operator运算符练习# GQ,2021.12.28'''
Python语言支持以下类型的运算符:
算术运算符
比较(关系)运算符
赋值运算符
逻辑运算符
位运算符
成员运算符
身份运算符
运算符优先级
'''# 算数运算符 + - * / % **print(10%4)# 取余print(10+4)# 加print(10/4)# 除print(10**2)# 幂数,10的2次方print(10//4)# 取整除# 比较运算符
aa =21
bb =10
cc =3if(aa == bb):print("aa==bb")else:print("aa!=bb")if(aa < bb):print("aa < bb")else:print("aa !< bb")# 修改aa、bb的值
aa =15; bb =30;if(aa < bb):print("aa < bb")else:print("aa !< bb")if(aa <= bb):print("aa <= bb")else:print("aa > bb")# 赋值运算符
cc = aa + bb
print("将a+b的值赋给c:", cc)#将a+b的值赋给c
cc += aa
print("等效于cc = cc + aa:",cc)#等效于cc = cc + aa
cc -= aa
print("等效于cc = cc - aa:",cc)#等效于cc = cc - aa
cc *= aa
print("等效于cc = cc * aa:",cc)#等效于cc = cc * aa
cc /= aa
print("等效于cc = cc / aa:",cc)#等效于cc = cc / cc
cc %= aa
print("等效于cc = cc % aa,取模赋值运算符:",cc)#等效于cc = cc % aa,取模赋值运算符
cc **= aa
print("等效于cc = cc ** aa,幂赋值运算符:",cc)#等效于cc = cc ** aa,幂赋值运算符
cc //= aa
print("等效于cc = cc // aa,取整除赋值运算符:",cc)#等效于cc = cc // aa,取整除赋值运算符# 位运算符# 练习:按位运算法则
ee =0b00111100
rr =0b00001101print(bin(ee&rr))# 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。输出结果 12 ,二进制解释: 0000 1100print(bin(ee|rr))# 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。输出结果 61 ,二进制解释: 0011 1101print(bin(ee^rr))#按位异或运算符:当两对应的二进位相异时,结果为1,相同时,结果为0。输出结果 49 ,二进制解释: 0011 0001print(bin(~ee))#按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1。输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式print(bin(ee<<2))#左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。输出结果 240 ,二进制解释: 1111 0000print(bin(ee>>3))#右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。输出结果 15 ,二进制解释: 0000 1111# 逻辑运算符,and(与),or(或),not(非),and有1个假,结果就是假。or有1个真,结果就是真。not不是假,结果就是真。
tt =10
yy =20if(tt and yy):print("变量tt和yy都为true")else:print("变量tt和yy都是false")if(tt or yy):print("变量tt和yy都是true,或其中1个变量是true")else:print("变量tt和yy都不是true")
tt =0if(tt and yy):print("变量tt和yy都为true")else:print("变量tt和yy都是false")if(tt or yy):print("变量tt和yy都是true,或其中1个变量是true")else:print("变量tt和yy都不是true")ifnot(tt and yy):print("变量tt和yy都是false,或其中1个变量是false")else:print("变量tt和yy都是true")ifnot(tt or yy):print("变量tt和yy都是false,或其中1个变量是false")else:print("变量tt和yy都是true")# 成员运算符 in,not inlist=[0,1,2,3,4,5];if(yy inlist):print("变量yy在给定的列表中list中")else:print("变量yy不在给定的列表list中")
yy =2if(yy notinlist):print("变量yy不在给定的列表中list中")else:print("变量yy在给定的列表list中")# 身份运算符 is,is not# is是判断两个标识符是不是引用自一个对象,is等同于==,is not等同于!=,id(xx)函数用于获取对象内存地址
uu =20
ii =20if(uu is ii):print("有相同的标识")else:print("没有相同的标识")if(id(uu)==id(ii)):print("有相同的标识")else:print("没有相同的标识")
uu =10if(uu is ii):print("有相同的标识")else:print("没有相同的标识")if(uu isnot ii):print("有相同的标识")else:print("没有相同的标识")
oo =[1,2,3]
pp = oo[:]print(pp is oo)print(pp == oo)# 运算符优先级"""
以下表格列出了从最高到最低优先级的所有运算符
运算符 描述
** 指数(最高级)
~ + - 按位翻转,一元加号和减号(最后两个的方法名为 +@ 和 -@)
* / % // 乘、除、求余数、取整除
+ - 加法、减法
>> << 右移、左移
& 位'AND'
^ \ | 位运算符
<= < > >= 比较运算符
== != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符
"""
a =20
b =10
c =15
d =5
e =0
e =(a + b)* c / d
print("e = (a + b) * c / d 结果为:",e)
e =((a + b)* c)/ d
print("e = ((a + b) * c) / d 结果为:",e)
e =(a + b)*(c / d)print("e = (a + b) * (c / d) 结果为:",e)
e = a +(b * c)/d
print("e = a + (b * c) /d 结果为:",e)