開啟「互動式 Python 執行列
Python中的邏輯運算
 課程目錄
 編輯章節
 EDU-MD
 Google 教室
 加至書籤

邏輯運算

除了數字運算之外,邏輯運算也是一個寫程式時一定會用到東西。寫程式時,常常會有「如果是… 則…」等的判斷,因此,瞭解邏輯的運算,是寫好程式一個很重要的一環。

布林值

我們都知道布林值是什麼,只是或許你不知道它叫布林值而已。所謂的布林值,就是「」或「」兩種值的名稱。布林值的英文稱為Boolean,最初是以數學家 George Boole 的名字命名的,在程式語言中,布林值常常被簡寫為 bool,並且以 True 或 1 代表「是」,而 False 或 0 代表「否」。

在 Python 中,布林變數可以有兩種值:不是 True 就是 False。讓我們看看以下的範例:

 >>> a = True  
>>> b = False  
>>> print(a)  
True  
>>> print(b)  
False    

大於、小於、等於

在瞭解布林值的基本概念後,現在讓我們來看看幾個最基本的邏輯運算符號。在數學中,我們常常會使用到 > 、<、= 來比較兩個數字間的大小,而在 Python 中,這些符號也帶有著相同的意義:

 >>> 3 < 5  
True    

在上述的範例中,「3 < 5」即是一個邏輯的運算,而我們都知道 3 < 5,因此這段邏輯運算所給出的結果就是 True。

這裡必須注意的是,當我們要判斷「大於」或「小於」時,我們可以直接輸入「>」或「<」;然而,當我們要比較「等於」時,是不能輸入「=」的,而是要輸入「==」:

 >>> 3 = 5  
File "", line 1  
SyntaxError: can't assign to literal    
 >>> 3 == 5  
False    

我們可以看到,第一段程式中,程式出現了錯誤,而第二段程式中,程式成功地回答了 False,可見「==」才是比較的運算符號。那麼,究竟「=」和「==」間的差別是什麼呢?

原來,「=」代表的是「給予值」的意思,例如:

  >>> a = 3   

代表的是將 3 這個值賦予給 a 這個變數;相對地,「==」代表的是兩個值之間的比較,例如:

  >>> a == 3  
True   

代表的是 a 與 3 這兩個東西之間的比較。

除了 >、<、== 之外,Python 跟很多其他的程式語言一樣,還有「>=」、「<=」。例如我們可以說:

>>> x = 5  
>>> x >= 5  
True  
>>> x > 5  
False     

將布林值賦予變數

為了方便,我們可以將以上的邏輯運算結果,像數字一樣地賦予給一個變數,這個變數的運作模式與其他變數基本上完全相同。讓我們看看這個例子:

>>> a = 3  
>>> a == 3  
True  
>>> b = a == 3  
>>> print(b)  
True     

在第四行時,我們將變數 b 賦予一個值,這個值所代表的就是「a == 3」,而因為 a == 3 這件事是 True,因此在第五行 print(b) 時,螢幕上顯示了 True。

若你覺得第四行的b = a == 3艱澀難懂,試著回想一下「=」和「==」兩者之間的差別:前者是用來賦予變數值,而後者是用來比較兩個東西間的差異。

AND

有時,在做邏輯運算的時候,我們會需要用兩個或兩個以上的布林值來做運算。什麼意思呢?假設現在有一個變數代表「符合年齡限制」,另一個變數代表「符合工作條件」:

>>> qualifiedAge = True  
>>> qualifiedJob = False     

現在我們想要建立另外一個變數叫做 pass,只有在 qualifiedAgequalifiedJob 兩個變數都是 True 的時候才會是 True,那要怎麼寫呢?

>>> pass = qualifiedAge and qualifiedJob  
>>> print(pass)  
False     

看到例子中第一行的「and」了嗎?and 是一個邏輯的運算符號,只有在左右兩側都成立的時候才會成立。還是不懂嗎?讓我們看看這個:

>>> False and False  
False  
>>> False and True  
False  
>>> True and False  
False  
>>> True and True  
True     

由此可知,and 只有在兩邊都是 True 的時候才會是 True。讓我們回到剛剛的例子,由於 qualifiedAgequalifiedJob 分別帶表 True 和 False,因此qualifiedAge and qualifiedJob所代表的就是 False。

OR

另一個跟 and 很像的邏輯運算符號是「or」。但是不同於 and 的是,or 只需要兩側的其中一個變數是 True,結果就會是 True:

>>> False or False  
False  
>>> False or True  
True  
>>> True or False  
True  
>>> True or True  
True     

回到剛剛 qualifiedAgequalifiedJob 的例子,倘若我們要將 pass 變數設為「如果qualifiedAgequalifiedJob其中一個變數成立即為 True」,那麼我們可以寫:

>>> pass = qualifiedAge or qualifiedJob  
>>> print(pass)  
True     

NOT

假設現在我們需要將布林變數的值反轉,也就是將 True 變成 False,並且 False 變成 True,那麼 Python 中也有很簡潔有力的工具可以達成這個目的,那就是 not 運算符號。

>>> not True  
False  
>>> not False  
True     

我們也可以將其運用在變數上:

>>> a = True  
>>> b = not a  
>>> print(b)  
False     

結論

最後,讓我們用這部影片來總結今天所學到的邏輯運算吧!

 均一平台
 台達磨課師
 酷課雲
 可汗學院
無相關資源
 收起側邊目錄
 
前往目錄頁面