尚未建立名稱
能量:0
我的帳號中心
問 學Bot 任何問題!
首頁&搜尋
最愛&收藏
所有課程
分享資源
帳號設定
關於學呀
線上募款
章節設定
章節名稱
章節類別
章節標籤
或者建立新標籤
章節內容
全螢幕編輯與預覽
# 邏輯運算 ![](https://images-eu.ssl-images-amazon.com/images/I/31UmIoOjTtL.png) 除了數字運算之外,邏輯運算也是一個寫程式時一定會用到東西。寫程式時,常常會有「**如果是... 則...**」等的判斷,因此,瞭解邏輯的運算,是寫好程式一個很重要的一環。 ## 布林值 我們都知道**布林值**是什麼,只是或許你不知道它叫布林值而已。所謂的布林值,就是「**是**」或「**非**」兩種值的名稱。布林值的英文稱為**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`,只有在 `qualifiedAge` 和 `qualifiedJob` 兩個變數都是 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。讓我們回到剛剛的例子,由於 `qualifiedAge` 和 `qualifiedJob` 分別帶表 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 ``` 回到剛剛 `qualifiedAge` 和 `qualifiedJob` 的例子,倘若我們要將 pass 變數設為「如果`qualifiedAge` 和 `qualifiedJob`其中一個變數成立即為 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 ``` ## 結論 最後,讓我們用這部影片來總結今天所學到的邏輯運算吧! ::: youtube 9OK32jb_TdI :::
儲存章節
前往實際頁面