邏輯運算



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


布林值


我們都知道布林值是什麼,只是或許你不知道它叫布林值而已。所謂的布林值,就是「」或「」兩種值的名稱。布林值的英文稱為 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 中也有很簡潔有力的工具可以達成這個目的,那就是 &#bold#¬ 運算符號。

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

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

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


結論


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



馬上練習!
完成 10 個練習題,
並且獲取學習點數!
開始練習
上一章節
下一章節
使用者分享的影片來自 YouTube。瞭解更多
+2 
感謝內容貢獻者 此篇文章由 2 位使用者共同編輯而成,並且由學呀的編輯團隊負責維護。點此查看編輯者名單。