python學習07:Python邏輯運算符及其用法

邏輯運算符是對真和假兩種布爾值進行運算(操做 bool 類型的變量、常量或表達式),邏輯運算的返回值也是 bool 類型值。

Python 中的邏輯運算符主要包括 and(邏輯與)、or(邏輯或)以及 not(邏輯非),它們的具體用法和功能如表 1 所示。
 python

表 1 Python 邏輯運算符及功能
邏輯運算符 含義 基本格式 功能
and 邏輯與(簡稱「與」) a and b 有 2 個操做數 a 和 b,只有它們都是 True 時,才返回 True,不然返回 False。
or 邏輯或(簡稱「或」) a or b 有 2 個操做數 a 和 b ,只有它們都是 False 時,才返回 False,不然返回 True。
not 邏輯非(簡稱「非」) not a 只須要 1 個操做數 a,若是 a 的值爲 True,則返回 False;反之,若是 a 的值爲 False,則返回 True。


下面代碼示範了與、或、非這三個邏輯運算符的使用:spa

# 直接對False求非運算,將返回True
print(not False)
# 5>3返回True,20.0大於10,所以結果返回True
print(5 > 3 and 20.0 > 10)
# 4>=5返回False,"c">"a"返回True。求或後返回True
print(4 >= 5 or "c" > "a")


有些時候,程序須要使用多個邏輯運算符來組合複雜的邏輯。例如,假設想表達以下邏輯:須要購買一套必須以「Python」結尾的教程,且教程價格小於 50 元或該教程是基於「正式版」的。假如使用以下程序:.net

bookName = "C語言中文網Python"
price = 99
version = "正式版"
if bookName.endswith('Python') and price < 50 or version == "正式版" :
print("打算購買這套Python教程")
else:
print("不購買!")

編譯、運行上面程序,能夠看到程序輸出「打算購買這套Python教程」。那麼上面程序是否有問題呢?

其實問題是存在的,這是由於程序會先計算 bookName.endswith('Python') and price < 50,即便該邏輯表達式中的兩個條件都是 False,但只要後面的 version==「正式版」 返回 True,整個表達式就會返回 True,從而致使程序依然會輸出「打算購買這套Python教程」。所以,即便把上面程序中的 bookName 改成不以「Python」結尾,程序也依然會輸出「打算購買這套Python教程」。

運算結果顯然與邏輯需求並不一致,邏輯需求是:須要購買一套名以「Python」 結尾的教程。此時應該使用圓括號來保證程序先對 price < 50 || version =="正式版" 求值,而後再與 bookName.endswith('Python') 的結果求與。

所以,應該把程序改成以下形式:code

bookName = "C語言中文網Python"
price = 99
version = "正式版"
if bookName.endswith('Python') and (price < 50 or version == "正式版") :
print("打算購買這套Python教程")
else:
print("不購買!")

從上面代碼能夠看出,對於組合邏輯來講,使用圓括號保證運算順序很是重要。教程

相關文章
相關標籤/搜索