新聞中心
邏輯運(yùn)算符用于操作 bool 類型的變量、常量或表達(dá)式,邏輯運(yùn)算的返回值也是 bool 值。

Python 的邏輯運(yùn)算符有如下三個(gè):
and:與,前后兩個(gè)操作數(shù)必須都是 True 才返回 True;否則返回 False。
or:或,只要兩個(gè)操作數(shù)中有一個(gè)是 True,就可以運(yùn)回 True;否則返回 False;
not:非,只需要一個(gè)操作數(shù),如果操作數(shù)為 True,則返回 False;如果操作數(shù)為 False,則返回 True。
下面代碼示范了與、或、非這三個(gè)邏輯運(yùn)算符的使用:
# 直接對(duì)False求非運(yùn)算,將返回True print(not False) # 5>3返回True,20.0大于10,因此結(jié)果返回True print(5 > 3 and 20.0 > 10) # 4>=5返回False,"c">"a"返回True。求或后返回True print(4 >= 5 or "c" > "a")
有些時(shí)候,程序需要使用多個(gè)邏輯運(yùn)算符來組合復(fù)雜的邏輯。例如,假設(shè)想表達(dá)如下邏輯:需要購買一套必須以“Python”結(jié)尾的教程,且教程價(jià)格小于 50 元或該教程是基于“正式版”的。假如使用如下程序:
bookName = "C語言中文網(wǎng)Python"
price = 99
version = "正式版"
if bookName.endswith('Python') and price < 50 or version == "正式版" :
print("打算購買這套Python教程")
else:
print("不購買!")編譯、運(yùn)行上面程序,可以看到程序輸出“打算購買這套Python教程”。那么上面程序是否有問題呢?
其實(shí)問題是存在的,這是因?yàn)槌绦驎?huì)先計(jì)算 bookName.endswith('Python') and price < 50,即使該邏輯表達(dá)式中的兩個(gè)條件都是 False,但只要后面的 version==“正式版” 返回 True,整個(gè)表達(dá)式就會(huì)返回 True,從而導(dǎo)致程序依然會(huì)輸出“打算購買這套Python教程”。因此,即使把上面程序中的 bookName 改為不以“Python”結(jié)尾,程序也依然會(huì)輸出“打算購買這套Python教程”。
運(yùn)算結(jié)果顯然與邏輯需求并不一致,邏輯需求是:需要購買一套名以“Python” 結(jié)尾的教程。此時(shí)應(yīng)該使用圓括號(hào)來保證程序先對(duì) price < 50 || version =="正式版" 求值,然后再與 bookName.endswith('Python') 的結(jié)果求與。
因此,應(yīng)該把程序改為如下形式:
bookName = "C語言中文網(wǎng)Python"
price = 99
version = "正式版"
if bookName.endswith('Python') and (price < 50 or version == "正式版") :
print("打算購買這套Python教程")
else:
print("不購買!")從上面代碼可以看出,對(duì)于組合邏輯來說,使用圓括號(hào)保證運(yùn)算順序非常重要。
需要說明的是,即使不是為了保證邏輯運(yùn)算的順序,且有括號(hào)和沒括號(hào)的輸出結(jié)果是一樣的,本教程也依然建議使用圓括號(hào)來提高程序的可讀性。
文章標(biāo)題:創(chuàng)新互聯(lián)Python教程:Python邏輯運(yùn)算符及其用法
鏈接地址:http://fisionsoft.com.cn/article/cddgjoc.html


咨詢
建站咨詢
