Python之常见运算符(基础篇)
计算机程序最重要的工作就是执行运算,运算种类包括算术运算、赋值运算、比较运算、逻辑运算等,运算由变量和运算符构成,本文将着重介绍这几种运算符的用法及适用类型
计算机程序最重要的工作就是执行运算,运算种类包括算术运算、赋值运算、比较运算、逻辑运算等,运算由变量和运算符构成,本文将着重介绍这几种运算符的用法及适用类型
一、算数运算符
Python支持多种算术运算,如:
运算符 | 描述 |
---|---|
* | 输出其参数的乘积 |
/ | 两个对象相除 |
// | 除法,向下取整 |
% | 输出第一个参数除以第二个参数的余数 |
+ | 输出参数的和,两个参数必须为数字或者类型相同的序列 |
- | 输出参数的差 |
** | 幂运算符 |
(1)乘法
参与运算的两个参数必须都为数字,或者一个参数为整数,而另一个参数为序列。在前一种情况下,两个数字将被转换为相同类型然后相乘;后者情况下,序列元素进行重复生成。参与计算的整数成为重复因子,如果重复因子为复数,将输出空序列。
如:
a=2
b=6
c=a*b
print("两个整数相乘:{}*{}={}".format(a,b,c))
b=[1,2,3]
c=a*b
print("整数与列表相乘:{}".format(c))
输出结果为:
两个整数相乘:2*6=12
整数与列表相乘:[1, 2, 3, 1, 2, 3]
(2)除法
运算符“ / ”和“ // ”将输出其参数的商。两个数字参数先被转换为相同类型。整数相除会输出一个float值,整数相整除的结果仍是整数;整除的结果就是使用floor函数进行算术除法的结果,简单说就是向下取整。除以零的运算将引发ZeroDivisionError异常。
如:
a=3
b=13.5
c=b/a
print("两个数字相除:{}/{}={}".format(b,a,c))
c=b//a
print("两个数字相除并向下取整:{}/{}={}".format(b,a,c))
输出结果为:
两个数字相除:13.5/3=4.5
两个数字相除并向下取整:13.5/3=4.0
(3)取模
运算符“ % ”和函数divmod将输出第一个参数除以第二个参数的余数。两个数字参数先被转换为相同类型。运算符“ % ”右边的参数为零,将引发ZeroDivisionError异常。
如:
a=3
b=13.5
c=b % a
print("两个数字相除取模:{}/{}={}".format(b,a,c))
c=divmod(b,a)
print("两个数字相除取模:divmod({},{})={}".format(b,a,c))
输出结果为:
两个数字相除取模:13.5/3=1.5
两个数字相除取模:divmod(13.5,3)=(4.0, 1.5)
(4)加法、减法
运算符“ + ”和“ - ”输出其参数的和与差,两个参数都必须为数字或者都为相同类型的序列,在加法运算中,前一种情况下两个数字将被转换为相同类型然后相加;后一种情况下,则将执行序列拼接操作。
如:
a=3
b=5
c=a+b
print("两个整数相加:{}+{}={}".format(a,b,c))
c=a-b
print("两个整数相减:{}-{}={}".format(a,b,c))
a=[1,2,3]
b=[4,5,6]
c=a+b
print("两个列表相加:{}+{}={}".format(a,b,c))
输出结果为:
两个整数相加:3+5=8
两个整数相减:3-5=-2
两个列表相加:[1, 2, 3]+[4, 5, 6]=[1, 2, 3, 4, 5, 6]
(5)幂运算
运算符“ ** ”和函数pow将输出其函数的平方值。对于int类型的操作数,结果将具有与操作数相同的类型
,除非第二个参数为负数。在那种情况下,所有参数会被转换为float类型并输出float类型的结果。对负数进行分数次幂运算将返回complex数值。
如:
a=3
b=4
c=b**a
print("幂计算:{}**{}={}".format(b,a,c))
c=pow(b,a)
print("幂计算:pow({},{})={}".format(b,a,c))
输出结果为:
幂计算:4**3=64
幂计算:pow(4,3)=64
二、比较运算符
Python支持常见的比较运算符,如:
运算符 | 描述 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
!= | 不等于 |
== | 等于 |
以下为各比较运算符的用法以及对应的输出结果
a=2
b=4
c=a>b
print("表达式:{}>{}={}".format(a,b,c))
c=b>a
print("表达式:{}>{}={}".format(b,a,c))
c=a>=b
print("表达式:{}>={}={}".format(a,b,c))
c=a<b
print("表达式:{}<{}={}".format(a,b,c))
c=a!=b
print("表达式:{}!={}={}".format(a,b,c))
c=a==b
print("表达式:{}=={}={}".format(a,b,c))
输出结果如下:
表达式:2>4=False
表达式:4>2=True
表达式:2>=4=False
表达式:2<4=True
表达式:2!=4=True
表达式:2==4=False
可以看到比较运算符返回的结果都是True或者False。
三、位运算符
Python语言支持多种位运算符,如:
运算符 | 描述 |
---|---|
I | 按位或 |
^ | 按位异或 |
& | 按位与 |
<< | 左移位运算符 |
>> | 右移位运算符 |
~ | 按位取反 |
在执行位运算之前,Python解释器会将变量转为二进制数据,然后让相同位的数据进行计算,具体介绍如下:
a=10
print("{}二进制为:{}".format(a,format(a,'b')))
b=20
print("{}二进制为:{}".format(b,format(b,'b')))
c=a|b
print("表达式:{}|{}={}(二进制为{})".format(a,b,c,format(c,'b')))
c=a^b
print("表达式:{}^{}={}(二进制为{})".format(a,b,c,format(c,'b')))
c=a&b
print("表达式:{}&{}={}(二进制为{})".format(a,b,c,format(c,'b')))
c=a<<2
print("表达式:{}<<2={}(二进制为{})".format(a,c,format(c,'b')))
c=a>>2
print("表达式:{}>>2={}(二进制为{})".format(a,c,format(c,'b')))
c=~a
print("表达式:~a ={}(二进制为{})".format(a,c,format(c,'b')))
输出结果如下:
10二进制为:1010
20二进制为:10100
表达式:10|20=30(二进制为11110)
表达式:10^20=30(二进制为11110)
表达式:10&20=0(二进制为0)
表达式:10<<2=40(二进制为101000)
表达式:10>>2=2(二进制为10)
表达式:~a =10(二进制为-11)
(1)按位或:第3行中,变量a与变量b执行按位或运算。
(2)按位异或:第4行中,变量a与变量b执行按位异或运算。
(3)按位与:第5行中,变量a与变量b执行按位与运算。
(4)左移位运算符:第6行中,变量a向左移动两位。
(5)右移位运算符:第7行中,变量a向右移动两位。
(6)按位取反:第8行中,变量a按位取反。
四、成员检测与标识号检测
Python语言使用in和not in运算符来判断某个对象是否为序列的成员,如下:
运算符 | 描述 |
---|---|
in | 判断对象是否在序列中,如果是则返回True |
not in | 判断对象是否不在序列中,如果是则返回True |
下面演示 in 和 not in 运算符的用法
tmp_list=[1,2,3,4,5,6]
result=4 in tmp_list
print("判断:数字4是否在tmp_list中,结果为:{}".format(result))
result =24 not in tmp_list
print("判断:数字24是否不在tmp_list中,结果为:{}".format(result))
result ="hello" in "hello world!"
print("判断:字符串hello是否在tmp_str中,结果为:{}".format(result))
执行结果如下,可以看到使用in运算符时,如果对象在序列中返回True;使用not in运算符时,如果对象不在序列中,则返回True。in与not in运算符可以用在序列中,也适用于字符串。
判断:数字4是否在tmp_list中,结果为:True
判断:数字24是否不在tmp_list中,结果为:True
判断:字符串hello是否在tmp_str中,结果为:True
而判断某两个对象是否相同,则是用is和not is运算符,如下:
运算符 | 描述 |
---|---|
is | 判断对象是否相同 |
not is | 判断对象是否不相同 |
下面演示is 和not is运算符的用法
a="hello"
b="world"
result=a is b
print("判断:对象a是否与对象b相同,结果为:{}".format(result))
result=a is not b
print("判断:对象a是否与对象b不相同,结果为:{}".format(result))
b = "hello"
result = a is b
print("对象a标识号:{}".format(id(a)))
print("对象b标识号:{}".format(id(b)))
print("判断:对象a是否与对象b相同,结果为:{}".format(result))
执行结果如下,可以看到使用is运算符时,如果两个对象相同,则返回True。在第3行和第4行输出了对象的标识号,类似于人的身份证编号,若是标识号相同,使用is运算符判断的结果就为True。
判断:对象a是否与对象b相同,结果为:False
判断:对象a是否与对象b不相同,结果为:True
对象a标识号:3184453989424
对象b标识号:3184453989424
判断:对象a是否与对象b相同,结果为:True
五、运算符优先级
如下表,对Python中运算符的优先顺序进行了总结,顺序为从最低优先级到最高优先级。相同单元格内的运算符具有相同优先级。
序号 | 运算符 | 描述 |
---|---|---|
1 | lambda | lambda表达式 |
2 | if…else | 条件表达式 |
3 | or | 布尔逻辑或 |
4 | and | 布尔逻辑与 |
5 | not | 布尔逻辑非 |
6 | in,not in,is,is not,<,<=,>,>=,!=,== | 比较运算,包括成员检测和标识号检测 |
7 | I | 按位或 |
8 | ^ | 按位异或 |
9 | & | 按位与 |
10 | <<,>> | 移位 |
11 | +,- | 加和减 |
12 | *,/,//,% | 乘,除,整除,取余 |
13 | ~ | 按位非 |
14 | ** | 乘方 |
由于在上一篇文章我们已经给大家介绍了逻辑运算符(and,or,not),所以在这里我们就不再多介绍了,有需要的小伙伴可以在上一篇文章中去了解逻辑运算符,这篇文章就到这里了,本文主要介绍了Python中的常见运算符,希望能够给小伙伴们带来一点帮助,喜欢的小伙伴们可以点点赞或者关注一下博主!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)