邏輯運算子用於操作 bool 型別的變數、常量或表示式,邏輯運算的返回值也是 bool 值。
python 的邏輯運算子有如下三個:
and:與,前後兩個運算元必須都是 true 才返回 true;否則返回 false。
or:或,只要兩個運算元中有乙個是 true,就可以運回 true;否則返回 false;
not:非,只需要乙個運算元,如果運算元為 true,則返回 false;如果運算元為 false,則返回 true。
下面**示範了與、或、非這三個邏輯運算子的使用:
# 直接對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 元或該教程是基於「正式版」的。假如使用如下程式:
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')
的結果求與。
因此,應該把程式改為如下形式:
bookname = "c語言中文網python" price = 99 version = "正式版" if bookname.endswith('python') and (price < 50 or version == "正式版") : print("打算購買這套python教程") else: print("不購買!")從上面**可以看出,對於組合邏輯來說,使用圓括號保證運算順序非常重要。
需要說明的是,即使不是為了保證邏輯運算的順序,且有括號和沒括號的輸出結果是一樣的,本教程也依然建議使用圓括號來提高程式的可讀性。
python邏輯運算子
python邏輯運算子 python語言支援邏輯運算子,以下假設變數 a 為 10,b為 20 運算子 邏輯表示式 描述 例項 and x and y 布林 與 如果 x 為 false,x and y 返回 false,否則它返回 y 的計算值。a and b 返回 20。or x or y 布林...
Python邏輯運算子
算術運算子 比較 關係 運算子 運算子邏輯表示式 描述例項 andx and y 布林 與 如果 x 為 false,x and y 返回 false,否則它返回 y 的計算值 a and b 返回 20。orx or y 布林 或 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值。a...
python 邏輯運算子
python 95 定義變數,儲存python的分數 english 92 定義變數,儲存english的分數 c 89 定義變數,儲存c語言的分數 輸出3個變數的值 print python str python english str english c str c n print python...