Python进阶之路 3.4.4 比较运算符

发布时间:2020-06-27 17:28:24 作者:Python进阶
来源:网络 阅读:287

3.4.4 比较运算符

尽管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("不满足条件")       #条件不满足
推荐阅读:
  1. Gin Web Framework 中文版
  2. Windows写代码,Linux运行 (WSL & VS Code)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python 新手 教程

上一篇:好程序员web前端教程分享JavaScript简写方法

下一篇:phpcms V9 广告模块 循环调用广告轮播(首个广告跟最后一个广告样式判断)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》