
1.5.2 逻辑表达式
逻辑表达式的值是布尔型数据True(真)和False(假)。逻辑表达式最常用于if判断语句和while循环语句中。逻辑表达式由比较判断运算和逻辑运算两部分组成。
1.比较判断运算
比较判断运算是判断两个事物或者两个表达式是否满足比较运算符确定的关系。例如(1+2)>(3+5),其中(1+2)和(3+5)是两个数值表达式,“>”是比较判断运算符,当“>”左边的表达式的值大于右边的表达式的值时,返回结果是True;当“>”左边的表达式的值小于或等于右边的表达式的值时,返回结果是False。显然(1+2)>(3+5)的返回值是False。Python中的比较判断运算符及运算关系如表1-10所示。比较判断运算是双目运算,要求比较判断运算符左右都要有表达式。
表1-10 比较判断运算符

当表达式的值都是数值时容易判断真假,当表达式的值是字符串时判断比较困难。字符串的比较是根据字符的ASCII码进行的,ASCII对照表如表1-5所示。字符串包含多个字符时比较复杂。字符串的比较原则如下:
(1)如果字符串1的第n位的ASCII码值等于字符串2的第n位的ASCII码值,则继续比较下一位。
(2)如果字符串1的第n位的ASCII码值大于字符串2的第n位的ASCII码值,则逻辑表达式字符串1>字符串2的值为True。
(3)如果字符串1的第n位的ASCII码值小于字符串2的第n位的ASCII码值,则逻辑表达式字符串1<字符串2的值为True。
(4)如果每一位的ASCII码值都相等,而且长度相同,则逻辑表达式字符串1==字符串2的值为True。
(5)如果字符串1是字符串2的前m位,例如'abcd'与'abcdef'比较,则逻辑表达式字符串1<字符串2的值为True。
例如下面的字符串逻辑比较运算:

2.逻辑运算
逻辑运算是对返回值为布尔型(True或False)数据的表达式进行进一步计算。例如2>3and'ab'=='ac',其中and是逻辑运算符,2>3和'ab'=='ac'都是逻辑表达式,表达式2>3and'ab'=='ac'相当于表达式FalseandTrue,表达式2>3and'ab'=='ac'的值是False。
逻辑运算符有and、or和not共3个。and需要连接左右两个逻辑表达式,当这两个表达式的值都是True时,and连接的逻辑表达式返回True,只要有一个表达式的值为False,则返回值是False; or也需要连接左右两个逻辑表达式,只要有一个表达式的值是True,则or连接的逻辑表达式返回值是True,两个表达式的值都是False时返回False;not是单目运算,表示取反运算,只连接一个逻辑表达式,not连接的逻辑表达式是True时返回值是False,是False时返回True。逻辑运算的关系如表1-11所示。
表1-11 逻辑运算
