尽管if语句本身的知识到现在为止已经全部讲完了,不过我们的学习远没有结束。前面给出的if语句的条件都非常简单,但在实际应用中,if语句的条件可能非常复杂,这就需要使用到节要介绍的比较运算符。
现在先来看一下表3-1列出的Python语言中的比较运算符
表 3-1 Python语言中的比较运算符
逻辑表达式 | 描述 |
---|---|
x == y | x等于y |
x < y | x小于y |
x > y | x大于y |
x >= y | x大于或等于y |
x <= y | x小于或等于y |
x != y | x不等于y |
x is y | x和y是同一个对象 |
x is not y | x和y不是同一个对象 |
x in y | x是y容器的成员,例如,y是列表[1,2,3,4],那么1是y的成员,而5不是y的成员 |
x not in y | x不是y容器成员 |
在表 3-1 描述的比较运算符中,涉及对象和容器的概念,目前还没讲这些深入的技术,在本节只需了解Python语言可以通过比较运算符操作对象和容器即可。在后面介绍对象和容器的章节,会详细介绍如何利用相关比较运算符操作对象和容器。
在比较运算中,最常用的就是判断两个值是否相等。例如,a大于b,a等于b,这些运算符包括"==","<",">",">=","<="和"!="。
如果比较两个值是否相等,需要使用"=="运算符,也就是两个等号。
>>> "hello" == "hello"
True
>>> "Hello" == "hello"
False
>>> 30 == 10
False
要注意,如果比较两个字符串是否相等,会比较两个字符串中对应的每一个字母,所以"Hello"和"hello"并不相等,也就是说比较运算符是对大小写敏感的。
在使用"=="运算符时一定要注意,不要写成一个等号(=),否则就成赋值运算符了。对于赋值运算符来说,等号(=)左侧必须是一个变量,否则会抛出异常。
对于字符串、数值等类型的值,也可以使用大于(>)、小于(<)等运算符比较它们的大小。
>>> "hello" > "Hello"
True
>>> 20 > 30
False
>>> s = 40
>>> s <= 30
False
>>> "hello" != "Hello"
True
Python语言在比较字符串时,会按字母ASCII顺序进行比较,例如,比较"hello"和"Hello"的大小。首先会比较"h"和"H"的大小,很明显'h'的ASCII大于'H'的ASCII,所以后面的都不需要比较了,因此,"hello" > "Hello"的结果是True。
除了比较大小的几个运算符外,还有用来确定两个对象是否相等的运算符,以及判断某个值是否属于一个容器的运算符,尽管现在还没有讲到容器和对象。但这里不妨做一个试验,来看看这些运算符如何使用,以便以后学习对象和容器时,更容易掌握这些运算符。
用于判断两个对象是否相等的运算符是is和is not,这两个运算符看起来和等于运算符(==)差不多,不过用起来却大有玄机。
>>> x = y = [1,2,3]
>>> z = [1,2,3]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False
>>> x is not z
True
在上面的代码中,使用 = =和is比较x和y时结果完全一样,不过在比较x和z时,就会体现出差异。x == z的结果是True,而x is z的结果却是False。出现这样的结果,原因是==运算符比较的是对象的值,x和z的值都是一个列表(也可以将列表看做一个对象),并且列表中的元素个数和值完全一样,所以x == z的结果是True。但is运算符用于判断对象的同一性,也就是说,不仅对象的值要完全一样,而且对象本身还要是同一个对象,很明显,x和y是同一个对象,因为在赋值时,先将一个列表赋值给y,然后在将y的值赋给x,所以x和y指向了同一个对象,而z另外赋值了一个列表,所以z和x、y尽管值相同,但并不是指向的同一个对象,因此,x is z的结果就是False。
判断某个值是否属于一个容器,要使用in和not in运算符。下面的代码首先定义一个列表变量x,然后判断变量y和一些值是否属于x。
>>> x = [1,2,3,4,5] #定义一个列表变量
>>> y = 3
>>> 1 in x
True
>>> y in x
True
>>> 20 in x
False
>>> 20 not in x
True
in和not in运算符也可以用于判断一个字符串是否包含另外一个字符串,也就是说,可以将字符串看作字符或子字符串的容器。
>>> s = "hello world"
>>> 'e' in s
True
>>> "e" in s
True
>>> "x" in s
False
>>> "x" not in s
True
>>> "world" in s
True
如果遇到需要将多个逻辑表达式组合在一起的情况,需要用到逻辑与(and)、逻辑或(or)和逻辑非(not)。逻辑与的运算规则是只有x and y中的x和y都为True时,运算结果才是True,否则为False。逻辑或的运算规则是只有x or y中的x和y都为False时,运算结果才是False,否则都为True。逻辑非的运算规则是not x中,x为True,运算结果为False,x为False,运算结果为True。
>>> 20 < 30 and 40 < 50
True
>>> 20 > 40 or 20 < 40
True
>>> not 20 > 40
True
[例 3.5] 本例演示了比较运算符的基本用法。
print(20 == 30) #判断20和30是否相等,运行结果:False
x = 20
y = 40
print(x < y) #判断x是否小于y,运行结果:True
if x > y: #条件不满足
print("x > y")
else: #条件满足
print("x < y")
s1 = "hello"
s2 = "Hello"
if s1 >= s2 and x > y: #条件不满足
print("满足条件")
elif not s1 < s2: #条件满足
print("基本满足条件")
else:
print("不满足条件") #条件不满足
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。