溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python進(jìn)階之路 3.4.4 比較運(yùn)算符

發(fā)布時(shí)間:2020-06-27 17:28:24 來源:網(wǎng)絡(luò) 閱讀:280 作者:Python進(jìn)階 欄目:編程語言

3.4.4 比較運(yùn)算符

盡管if語句本身的知識(shí)到現(xiàn)在為止已經(jīng)全部講完了,不過我們的學(xué)習(xí)遠(yuǎn)沒有結(jié)束。前面給出的if語句的條件都非常簡(jiǎn)單,但在實(shí)際應(yīng)用中,if語句的條件可能非常復(fù)雜,這就需要使用到節(jié)要介紹的比較運(yùn)算符。

現(xiàn)在先來看一下表3-1列出的Python語言中的比較運(yùn)算符

表 3-1 Python語言中的比較運(yùn)算符

邏輯表達(dá)式 描述
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是同一個(gè)對(duì)象
x is not y x和y不是同一個(gè)對(duì)象
x in y x是y容器的成員,例如,y是列表[1,2,3,4],那么1是y的成員,而5不是y的成員
x not in y x不是y容器成員

在表 3-1 描述的比較運(yùn)算符中,涉及對(duì)象和容器的概念,目前還沒講這些深入的技術(shù),在本節(jié)只需了解Python語言可以通過比較運(yùn)算符操作對(duì)象和容器即可。在后面介紹對(duì)象和容器的章節(jié),會(huì)詳細(xì)介紹如何利用相關(guān)比較運(yùn)算符操作對(duì)象和容器。

在比較運(yùn)算中,最常用的就是判斷兩個(gè)值是否相等。例如,a大于b,a等于b,這些運(yùn)算符包括"==","<",">",">=","<="和"!="。

如果比較兩個(gè)值是否相等,需要使用"=="運(yùn)算符,也就是兩個(gè)等號(hào)。

>>> "hello" == "hello"
True
>>> "Hello" == "hello"
False
>>> 30 == 10
False

要注意,如果比較兩個(gè)字符串是否相等,會(huì)比較兩個(gè)字符串中對(duì)應(yīng)的每一個(gè)字母,所以"Hello"和"hello"并不相等,也就是說比較運(yùn)算符是對(duì)大小寫敏感的。

在使用"=="運(yùn)算符時(shí)一定要注意,不要寫成一個(gè)等號(hào)(=),否則就成賦值運(yùn)算符了。對(duì)于賦值運(yùn)算符來說,等號(hào)(=)左側(cè)必須是一個(gè)變量,否則會(huì)拋出異常。

對(duì)于字符串、數(shù)值等類型的值,也可以使用大于(>)、小于(<)等運(yùn)算符比較它們的大小。

>>> "hello" > "Hello"
True
>>> 20 > 30
False
>>> s = 40
>>> s <= 30
False
>>> "hello" != "Hello"
True

Python語言在比較字符串時(shí),會(huì)按字母ASCII順序進(jìn)行比較,例如,比較"hello"和"Hello"的大小。首先會(huì)比較"h"和"H"的大小,很明顯'h'的ASCII大于'H'的ASCII,所以后面的都不需要比較了,因此,"hello" > "Hello"的結(jié)果是True。

除了比較大小的幾個(gè)運(yùn)算符外,還有用來確定兩個(gè)對(duì)象是否相等的運(yùn)算符,以及判斷某個(gè)值是否屬于一個(gè)容器的運(yùn)算符,盡管現(xiàn)在還沒有講到容器和對(duì)象。但這里不妨做一個(gè)試驗(yàn),來看看這些運(yùn)算符如何使用,以便以后學(xué)習(xí)對(duì)象和容器時(shí),更容易掌握這些運(yùn)算符。

用于判斷兩個(gè)對(duì)象是否相等的運(yùn)算符是is和is not,這兩個(gè)運(yùn)算符看起來和等于運(yùn)算符(==)差不多,不過用起來卻大有玄機(jī)。

>>> 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時(shí)結(jié)果完全一樣,不過在比較x和z時(shí),就會(huì)體現(xiàn)出差異。x == z的結(jié)果是True,而x is z的結(jié)果卻是False。出現(xiàn)這樣的結(jié)果,原因是==運(yùn)算符比較的是對(duì)象的值,x和z的值都是一個(gè)列表(也可以將列表看做一個(gè)對(duì)象),并且列表中的元素個(gè)數(shù)和值完全一樣,所以x == z的結(jié)果是True。但is運(yùn)算符用于判斷對(duì)象的同一性,也就是說,不僅對(duì)象的值要完全一樣,而且對(duì)象本身還要是同一個(gè)對(duì)象,很明顯,x和y是同一個(gè)對(duì)象,因?yàn)樵谫x值時(shí),先將一個(gè)列表賦值給y,然后在將y的值賦給x,所以x和y指向了同一個(gè)對(duì)象,而z另外賦值了一個(gè)列表,所以z和x、y盡管值相同,但并不是指向的同一個(gè)對(duì)象,因此,x is z的結(jié)果就是False。

判斷某個(gè)值是否屬于一個(gè)容器,要使用in和not in運(yùn)算符。下面的代碼首先定義一個(gè)列表變量x,然后判斷變量y和一些值是否屬于x。

>>> x = [1,2,3,4,5] #定義一個(gè)列表變量
>>> y = 3
>>> 1 in x
True
>>> y in x
True
>>> 20 in x
False
>>> 20 not in x
True

in和not in運(yùn)算符也可以用于判斷一個(gè)字符串是否包含另外一個(gè)字符串,也就是說,可以將字符串看作字符或子字符串的容器。

>>> s = "hello world"
>>> 'e' in s
True
>>> "e" in s
True
>>> "x" in s
False
>>> "x" not in s
True
>>> "world" in s
True

如果遇到需要將多個(gè)邏輯表達(dá)式組合在一起的情況,需要用到邏輯與(and)、邏輯或(or)和邏輯非(not)。邏輯與的運(yùn)算規(guī)則是只有x and y中的x和y都為True時(shí),運(yùn)算結(jié)果才是True,否則為False。邏輯或的運(yùn)算規(guī)則是只有x or y中的x和y都為False時(shí),運(yùn)算結(jié)果才是False,否則都為True。邏輯非的運(yùn)算規(guī)則是not x中,x為True,運(yùn)算結(jié)果為False,x為False,運(yùn)算結(jié)果為True。

>>> 20 < 30 and 40 < 50
True
>>> 20 > 40 or 20 < 40
True
>>> not 20 > 40
True

[例 3.5] 本例演示了比較運(yùn)算符的基本用法。

print(20 == 30)             #判斷20和30是否相等,運(yùn)行結(jié)果:False
x = 20
y = 40
print(x < y)                #判斷x是否小于y,運(yùn)行結(jié)果: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("不滿足條件")       #條件不滿足
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI