购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 运算符与表达式

Python的运算符号包括算术运算符、关系运算符和逻辑运算符。表达式是由数字或字符串和运算符组成的式子。表达式通常用于判断语句和循环语句的条件使用,表达式是学习控制语句编写的基础。本节将介绍Python中的各种表达式的使用。

2.5.1 算术运算符和算术表达式

算术运算符包括四则运算符、求模运算符和求幂运算符。Python中的算术运算符和表达式如表2-2所示。

表2-2 Python中的算术运算符和表达式

注意 与C、Java语言不同,Python不支持自增运算符和自减运算符。例如,i++、i--是错误的语法。

下面【例2-7】这段代码演示了Python中算术运算符的使用方法。

【例2-7.py】


01     print( "1 + 1 =", 1 + 1)
02     print ("2 - 1 =", 2 - 1)
03     print( "2 * 3 =", 2 * 3)
04     print ("4 / 2 =", 4 / 2)
05     print( "1 / 2 =", 1 / 2)
06     print ("1.0 / 2.0 =", 1.0 / 2.0)
07     print ("3 % 2 =", 3 % 2)
08     print ("2 ** 3 =", 2 ** 3)

【代码说明】

·第1行代码的输出结果:1+1=2

·第2行代码的输出结果:2-1=1

·第3行代码的输出结果:2*3=6

·第4行代码的输出结果:4/2=2

·第5行代码的输出结果:1/2=0.5

·第6行代码中的被除数是1.0,除数是2.0。Python把这两个数作为浮点型处理,因此相除后可以得到正确的结果。输出结果:1.0/2.0=0.5

·第7行代码中,求模的值为3除以2后的余数。输出结果:3%2=1

·第8行代码的输出结果:2**3=8

注意 Python2中执行“1/2”算术表达式的结果略有不同,Python2认为1和2是整型,相除后的结果会被截断,因此得到的值为0。

Python的算术表达式具有结合性和优先性。结合性是指表达式按照从左往右、先乘除后加减的原则。即从表达式的左边开始计算,先执行乘法和除法运算,再执行加法和减法运算。例如:


a + b * c % d

以上表达式先执行b*c,然后执行b*c%d,最后执行加法运算。

优先性是指先执行圆括号内的表达式,再按照结合性的原则进行计算。例如:


(a + b) * (c % d)

以上表达式先计算a+b的值,然后计算c%d的值,最后把两个值相乘。下面这段代码演示了算术运算的优先级。


01     # 算术运算的优先级
02     a = 1
03     b = 2
04     c = 3
05     d = 4
06     print ("a + b * c % d =", a + b * c % d) 
07     print ("(a + b) * (c % d) =", (a + b) * (c % d))

第6行代码的输出结果:


a + b * c % d = 3

第7行代码的输出结果:


(a + b) * (c % d) = 9

2.5.2 关系运算符和关系表达式

关系运算符即对两个对象进行比较的符号。Python中的关系运算符和表达式如表2-3所示。

表2-3 Python中的关系运算符和表达式

下面这段代码演示了关系表达式的逻辑输出。


01     # 关系表达式
02     print (2 > 1)
03     print (1 <= 2)
04     print (1 == 2)
05     print (1 != 2)

【代码说明】

·第2行代码,2>1的逻辑正确。输出结果:True

·第3行代码,1<=2的逻辑正确。输出结果:True

·第4行代码,1==2的逻辑错误。输出结果:False

·第5行代码,1!=2的逻辑正确。输出结果:True

不同的关系运算符优先级别不同。其中<、<=、>、>=4个运算符的优先级别相等,==、!=的优先级别相等。而<、<=、>、>=的优先级别大于==、!=的优先级别。例如:a>=b==c等价于(a>=b)==c。

关系运算符的优先级低于算术运算符。下面的代码演示了关系运算符的优先级别。


01     # 关系表达式的优先级别
02     print( "1 + 2 < 3 - 1 =>", 1 + 2, "<", 3 - 1, "=>", 1 + 2 < 3 - 1)
03     print ("1 + 2 <= 3 > 5 % 2 =>", 1 + 2, "<=", 3, ">", 5 % 2, "=>", 1 + 2 <= 3 > 5 % 2)

【代码说明】

·第2行代码,先执行1+2=3,然后执行3–1=2,最后比较3<2。输出结果:


1 + 2 < 3 - 1 => 3 < 2 => False

·第3行代码,先执行1+2=3,然后执行5%2=1,最后比较3<=3>1。输出结果:


1 + 2 <= 3 > 5 % 2 => 3 <= 3 > 1 => True

2.5.3 逻辑运算符和逻辑表达式

逻辑表达式是用逻辑运算符和变量连接起来的式子。任何语言的逻辑运算符都只有3种——逻辑与、逻辑或和逻辑非。C、Java语言的逻辑运算符用 & & 、||、!表示,Python采用and、or、not表示。表2-4列出了Python中的逻辑运算符和表达式。

表2-4 Python中的逻辑运算符和表达式

下面的代码演示了逻辑表达式的运算。


01     # 逻辑运算符
02     print( not True)
03     print( False and True)
04     print (True and False)
05     print (True or False)

【代码说明】

·第2行代码,True的逻辑非为False。输出结果:False

·第3行代码,检测到and运算符左侧的False,就直接返回False。输出结果:False

·第4行代码,检测到and运算符左侧为True,然后继续检测右侧,右侧的值为False,于是返回False。输出结果:False

·第5行代码,or运算符的左侧为True,于是返回True。输出结果:True

逻辑非的优先级大于逻辑与和逻辑或的优先级,而逻辑与和逻辑或的优先级相等。逻辑运算符的优先级低于关系运算符,必须先计算关系运算符,然后再计算逻辑运算符。下面这段代码演示了逻辑运算符、关系运算符和算术运算符的优先级别。


01     # 逻辑表达式的优先级别
02     print( "not 1 and 0 =>", not 1 and 0)
03     print( "not (1 and 0) =>", not (1 and 0))
04     print ("(1 <= 2) and False or True =>", (1 <= 2) and False or True)
05     print ("(1 <= 2) or 1 > 1 + 2 =>", 1 <= 2, "or", 1 > 2, "=>", (1 <= 2) or (1 < 2))

【代码说明】

·第2行代码,先执行not 1,再执行and运算。输出结果:


not 1 and 0 => False

·第3行代码,先执行括号内的1 and 0,再执行not运算。输出结果:


not (1 and 0) => True

·第4行代码,先执行1<=2的关系运算表达式,再执行and运算,最后执行or运算。输出结果:


(1 <= 2) and False or True => True

·第5行代码,先执行1<=2的关系运算表达式,再执行表达式1>1+2,最后执行or运算。输出结果: 89UXk4rz2A9ZzC+L2px32RPCoabvVw333e8dkw3Ak+u+RWh1pe6KlTMczdSEH9vi


(1 <= 2) or 1 > 1 + 2 => True or False => True

点击中间区域
呼出菜单
上一章
目录
下一章
×