3.1 认识运算符
Python运算符简介
3.1.1 Python运算符的概念
所谓“运算符”,指的是运算符号。在Python中,有的时候需要对一个或多个数字,一个或多个字符串,以及其他的数据对象进行运算操作,此时需要用到运算符,比如,2+3中的“+”是一种运算符。
3.1.2 Python常见运算符
Python中常见的运算符有+、-、*、/、**、<、>、!=、//、%、&、|、^、~、>>、<<、<=、>=、==、not、and和or。
表3-1总结了常见运算符及其对应的含义。
表3-1 常见运算符及其对应含义
读者可以先浏览一遍这个表,有个初步的印象即可,在后续需要复习的时候,也可以通过此表进行快速温习。下一小节将通过实例为读者详细介绍各运算符的使用。
3.1.3 Python运算符应用实例
Python运算符实际运用技巧
Python运算符重要特点
1. 算数运算符
(1)加法运算符(+)
加法运算符不仅能够操作两个数字进行求和运算,也可以操作两个字符串对象进行字符串的连接。总的来说,运算符可以实现两个对象相加的功能,而对象的类型既可以是数,也可以是字符串。
可以输入如下程序:
#两个数字相加 a=7+8 print(a)
该程序主要使用加法运算符(+)实现了两个数字相加的功能,输出结果为15。
加法运算符(+)除了可以实现两个数字相加的功能之外,还可以实现两个字符串相加,字符串相加的含义即连接两个字符串。
可以输入如下所示的程序:
#两个字符串相加 b="GOOD"+" JOB!" print(b)
该程序主要通过加法运算符连接了字符串“GOOD”与字符串“JOB!”,所以最终程序的输出结果如下:
GOOD JOB!
可以看到,已经成功将两个字符串进行了连接,合并成了一个字符串。
(2)减法运算符(-)
该运算符主要实现的功能是取一个数字的相反数或者实现两个数字相减。若其操作数为两个数,一般来说进行相减运算;若其操作数为一个数,一般来说进行取相反数的运算。
可以输入如下程序:
#"-":取一个数字的相反数 a=-7 print(a)
此时减法运算符的操作数为7,只有一个,所以进行的是取相反数的运算,程序最终输出的结果是7的相反数,即输出结果为-7。
同样,可以输入以下程序:
#"-":实现两个数字相减 b=19-1 print(b)
减法运算符的操作数有两个时一般进行相减运算,计算出来的结果即是19减去1之后的结果,所以程序的输出结果为18。
(3)乘法运算符(*)
乘法运算符除了可以对数进行乘法运算之外,也可以对字符串进行运算。对字符串进行运算时,表示的是将该字符串重复多少次。
可以输入如下程序:
#"*":两个数相乘 a=4*7 print(a)
此时,乘法运算符连接的是两个数,所以进行数的乘法运算,结果为4乘以7的结果,即输出28。
此外,乘法运算符还可以进行字符串重复运算,比如可以输入以下程序:
#"*":两个数相乘或者字符串重复 b="hello "*5 print(b)
乘法运算符连接的是字符串和数字,数字为5,表示将字符串重复5次。如果要改变重复的次数,只需要改变该数字即可。所以程序的输出结果如下:
hello hello hello hello hello
可以看到,字符串“hello”重复了5次之后组成了一个新的字符串并赋值给了变量b。
(4)除法运算符(/)
除法运算符可以实现两个数字相除,比如可以输入以下程序:
#"/":两个数字相除 a=7/2 print(a)
此时,会计算7÷2的结果,程序的输出结果为3.5。
(5)幂运算符(**)
幂运算符可以对数进行幂运算,比如可以输入以下程序:
#"**":求幂运算 a=2**3 print(a)
此时,相当于计算2的3次幂,就是计算2*2*2的值,最终的结果输出8。
(6)整除运算符(//)
整除运算相当于先进行除法运算,然后返回其商的整数部分,舍掉余数。
可以输入以下程序:
#"//":整除运算 a=10//3 print(a)
此时会计算10与3的整除结果,即10÷3后,取商部分,舍掉余数,最终输出的结果是3。
(7)求余运算符(%)
求余运算相当于先进行除法运算,然后返回其商的余数部分,舍掉商。可以输入以下程序:
#"%":求余运算 a=10%3 print(a)
此时,会计算10÷3的余数,最终的输出结果为1。
那么,如果一个除法运算,可以整除,没有余数,那么进行求余运算会得到什么结果呢?若除法运算可以整除,没有余数,此时进行求余运算,得到的结果会为0。
可以输入以下程序:
#没有余数的时候返回什么 b=10%1 print(b)
此时,10÷1的结果是10,没有余数,输出的结果为0。
2. 比较运算符
比较运算符主要有6种:大于运算符、大于等于运算符、小于运算符、小于等于运算符、等于运算符和不等于运算符。
可以输入以下程序:
#"<":小于符号,返回一个bool值 a=3<7 print(a)#返回True,因为3确实比7小 b=3<3 print(b)#返回False,因为3不比3小 #">":大于符号,返回一个bool值 c=3>7 print(c)#返回False,因为3不比7大 d=3>1 print(d)#返回True,因为3确实比1大
在程序段a=3<7中,由于赋值运算的优先级非常低,所以先运算3<7部分,再将比较的结果赋值给a。其他程序段中也类似,赋值运算的优先级一般是最低的。
比较运算中会判断该比较的结果是否正确。若结果正确,则值为True;若结果不正确,则值为False。所以以上程序最终的输出结果为:
True False False True
(1)等于运算符(==)
在Python中,等于运算符为两个等号;若是一个等号,则表示赋值运算。
可以输入以下程序:
#"==":比较两个对象是否相等 a=12==13 print(a) b="hello"=="hello" print(b)
等于运算符一般可以判断两个对象是否相等,若相等则返回True,若不相等则返回False,所以以上程序的执行结果为:
False True
(2)不等于运算符(!=)
不等于运算符一般用来判断两个对象是否不相等,若不相等返回True,若相等则返回False,比如可以输入以下程序:
#"!=":不等于符号,同样返回一个bool值 a=2!=3 print(a)#注释1 b=2!=2 print(b)#注释2
由于2确实不等于3,所以,上面的程序注释1处输出的结果为True,而注释2处输出的结果为False,最终的输出结果如下:
True False
(3)大于等于运算符(>=)与小于等于运算符(<=)
大于等于的意思是只要满足大于或者等于的任何一个条件,则返回True,否则返回False。同样,类似的,小于等于代表的是小于或者等于。
可以输入如下程序:
#"<=":小于等于符号,比较运算,小于或等于,返回一个bool值 a=3<=3 print(a)#返回True,因为满足等于 b=4<=3 print(b)#返回False #">=":大于等于符号 a=1>=3 print(a)#返回False b=4>=3 print(b)#返回True,满足大于
关键部分已给出注释,所以,程序最终的输出结果为:
True False False True
3. 逻辑运算
逻辑运算主要包括逻辑与、逻辑或、逻辑非运算。
(1)逻辑非运算符(not)
逻辑非运算指的是若原来的值为True,进行了非运算之后则变为False,若原来的值为False,则进行非运算之后变为True。
可以输入以下程序:
#not:逻辑非 a=True b=not a#注释1 print(b) c=False print(not c)#注释2
上面的程序中,注释1处通过not a对a进行了逻辑非运算,原来a的值为True,所以运算之后a的值就成了False。在注释2处,对c进行了逻辑非运算,c原来的值为False,运算之后输出True。所以上面程序最终的输出结果为:
False True
(2)逻辑与运算符(and)
关于逻辑与运算,大家只需要记住以下规律即可。
• True and True等于True。
• True and False等于False。
• False and True等于False。
比如,输入程序:
print(True and True)
执行的结果为True
(3)逻辑或运算符(or)
关于逻辑或运算符,大家需要记住以下规律即可。
• True or True等于True。
• True or False等于True。
• False or False等于False。
比如可以输入程序:
print(True or False)
此时进行的是逻辑或运算,输出结果为True。
4. 按位运算
按位运算主要有4种:按位与运算(&)、按位或运算(|)、按位异或运算(^)和按位翻转运算(~)。(1)按位与运算(&)
按位与的过程如下。
• 首先将该数据转换为二进制。
• 然后将这些二进制的数按位进行与运算。
• 将得到的二进制数再转换为十进制数显示。
比如,可以进行一个非常有趣的实验,输入以下程序:
a=7&18 print(a)
执行之后,会发现输出的结果为2,那么,为什么7跟18与会得到2呢?
首先需要将7和18都转换为二进制数。如果大家没有学过二进制数的转换,可以通过计算器将十进制数转换为二进制数。若不懂操作,可以结合本课时对应的视频观看相关操作演示。
首先打开计算器,然后将7转换为二进制,得到7的二进制值是111,自动补全为8位,即00000111。
然后将18转换为二进制,得到18的二进制值是10010,同样补全为8位,即00010010。
接着,将00000111与00010010按位进行与运算,如下所示。
数据1:00000111
数据2:00010010
按位与:00000010
可以看到,得到的结果是00000010。最后将00000010转换为十进制数,得到数字2,所以7与18按位与的结果是二进制的10,即十进制的2。
(2)按位或运算(|)
同样,要将数字转换为二进制之后按位进行或运算。
比如,可以输入以下程序:
#"|":按位或运算 a=7|18 print(a)
此时计算的是7和18按位或之后的结果,结果会输出23。读者可以思考一下为何会出现该结果。同样,7的二进制形式是00000111,18的二进制形式是00010010。
将00000111跟00010010按位进行或运算,如下所示。
数据1:00000111
数据2:00010010
按位或:00010111
可以看到,按位或运算的结果为00010111,将该二进制数转为十进制数,即得到结果23。
(3)按位异或运算(^)
按位异或指的是位上的数不同则为1,相同则为0。
同样可以输入以下程序:
#"^"按位异或 a=7^18 print(a)
此时计算7与18按位异或的结果21,分析一下为何会出现该结果。
同样,7的二进制形式是00000111,18的二进制形式是00010010。将00000111跟00010010按位进行异或运算,如下所示。
数据1: 00000111
数据2: 00010010
按位异或: 00010101
可以看到,此时计算出来的结果为00010101,只要将二进制数00010101转换为十进制数即可得到最终输出结果21。
(4)按位翻转运算(~)
按位翻转运算的公式为~x=-(x+1),比如~20的计算公式是-(20+1),所以~20的结果为-21。
比如,可以输入以下程序:
#"~":按位翻转~x=-(x+1) a=~18 #~18=-(18+1)=-19 print(a)
按照按位翻转计算公式,可以手动计算一下最终结果,得到-19。
执行该程序,可以得到结果为-19,运算正确。
5. 左移运算(<<)与右移运算(>>)
左移运算(<<)与右移运算(>>)同样是需要将原来的数字转换为二进制的形式之后再进行移位。
比如,可以输入以下程序:
#"<<":左移 a=18<<1 print(a) b=3<<3 print(b)
接下来,将分析一下以上程序。18左移就是将它的二进制形式00010010左移,即移后成为00100100,即成为36,左移一个单位相当于乘2,左移两个单位相当于乘4,左移3个单位相当于乘8,左移n个单位相当于乘2的n次幂。所以18左移一个单位,相当于18*2,结果为36,3左移3个单位,相当于3*2**3,即3*8,结果为24。所以,程序的最终输出结果为:
36 24
右移是左移的逆运算,即将对应的二进制数向右移动,右移一个单位相当于除以2,右移两个单位相当于除以4,右移3个单位相当于除以8,右移n个单位相当于除以2的n次幂。
可以输入以下程序:
#">>":右移 a=18>>1 print(a) b=18>>2 print(b)
此时,若18右移一个单位,相当于18除以2,右移两个单位,相当于18除以4,所以程序的最终执行结果为:
9 4
本节介绍了Python常见的运算符,内容比较多,可以看表3-1直接复习。