- 利用Python輕松學數學
- 蹇彤
- 1742字
- 2021-02-26 19:37:48
2.7 邏輯運算
計算機編程世界從某種程度上說,就是數學和邏輯的世界,這部分內容是計算機專業中一門叫作《離散數學》的課程的基礎內容。本節只簡單介紹邏輯運算,但內容非常重要,請大家一定要完全理解和掌握。
現在絕大多數計算機的邏輯世界都是二值邏輯,即只有兩個邏輯值,也叫布爾值,一個是“真”,另一個是“假”,在Python 中,前者用True 表示,后者用False表示。再次提醒大家,這兩個單詞的首字母要大寫。這里的“真”表示某個條件成立,“假”表示某個條件不成立,并不是日常所說的“真善美”和“假丑惡”,它們沒有褒義和貶義的意思。
要了解邏輯,先需要了解什么是命題。命題就是表達判斷的陳述句,它具有一個確定的真值。
當命題成立時,其真值為真;當命題不成立時,其真值為假。因此,命題的真值不一定就為真,也可能為假,請注意這點。
看看下面的句子。
(1)一般情況下,水加熱到100℃,就會沸騰。
(2)中國的首都是北京。
(3)宇宙中會存在外星人。
(4)汽車開得越快,行駛同樣的距離,需要的時間會越長。
(5)那個女孩長得真漂亮!
(6)快點走,不然我們要遲到了!
其中的(1)~(4)都是表達判斷的陳述句,因而它們都是命題,第(1)(2)句成立,它們的真值都為真,對于第(3)句,目前人類的科技不好判斷其真假,有人相信有外星人,有人不相信有外星人,但從本質上說,它一定有真假,因此我們承認它是一個命題。第(4)句是命題,但它的真值顯然為假。第(5)句是感嘆句,第(6)句是祈使句,它們都不是陳述句,因而不是命題,就不存在真值。
Python 編程中主要會用到三種邏輯運算,分別是:邏輯非、邏輯與、邏輯或。
1. 邏輯非
邏輯非也叫邏輯反,在Python 中使用單詞not 來表示,看下面的命題。
· 原命題:北京是中國的首都。(該命題的真值為真)
· 否命題:北京不是中國的首都。(該命題的真值為假)
從數學上理解,編程中的求邏輯非就是對一個原命題求它的否命題。因此,原來真值為真的命題求非后真值為假,原來真值為假的命題求非后真值為真。
2. 邏輯與
邏輯與在Python 中使用單詞and 來表示。
如果一個復雜的大的命題由兩個或多個小命題組成,并且這些小命題同時成立,那么這個大的命題也成立。下面看這句話,假設你的父母對你說:“如果明天是周末,并且不下雨,我們全家就去長城玩。”這句話中包含有兩個小命題:
第一:明天是周末。
第二:明天不下雨。
只有當這兩個小命題(也就是這兩個條件)同時成立,你們一家才會去長城玩,如果其中有一個不成立,就不能去玩,即:要么明天不是周末,要么明天下雨了,那么你們家就不會去長城玩了。
如果用Python 寫出偽代碼(偽代碼不是真正的Python 代碼,而是使用自然語言,比如漢語或英語寫出的,表達邏輯意思的模擬代碼),句子如下:
明天是周末 and 明天不下雨
其中的and 就是邏輯與的意思,可以理解為它對應于漢語中的“并且”“和”“與”等表示多個條件同時成立的意思。
3. 邏輯或
邏輯或在Python 中使用單詞or 來表示。
如果一個復雜的大的命題由兩個或多個小命題組成,并且這些小命題至少有一個成立,那么這個大的命題就成立。
看這個例子:你和小明是鄰居,也是很好的朋友,在同一所學校同一個年級但不同的班級讀書,你們約好了每天要一起回家,那么怎樣才能保證每天都一起回家呢?你們約定:如果他們班放學早,他就在校門口等你;如果你們班放學早,你就在校門口等他;如果你們兩個班同時放學,你們仍然在校門口匯合,然后一起回家。總之,不見不散。
(1)你會在校門口等小明。
(2)小明會在校門口等你。
偽代碼:你會在校門口等小明 or 小明會在校門口等你
只要你們嚴格按這樣的約定做了,那么無論是前一個命題成立,還是后一個命題成立,或者前后兩個命題同時成立,都能保證你們每天一起回家。
三種邏輯運算的法則如表2-5 所示。
表2-5

從表2-5 可以看出以下三種情況:
· 當進行邏輯非運算時,結果就是原命題的否命題。
· 當進行邏輯與運算時,只有兩個命題同時為真,整個表達式才為真。其中,如果任何一個為假,整個表達式就為假。
· 當進行邏輯或運算時,只有兩個命題同時為假,整個表達式才為假,其中,如果任何一個為真,整個表達式就為真。
三種邏輯運算中,邏輯非的優先級別最高,邏輯與次之,邏輯或最低,如果需要改變邏輯運算的優先順序,同樣可以添加圓括號。
三種邏輯運算的結果都是布爾類型,只可能得到兩個值,要么是True,要么是False。