[12] Python條件判斷語句(三)

1. 概述

今天我們繼續看條件判斷語句,主要看邏輯運算符。首先看一下學習計劃列表,粗體為已學,斜體為新增或修改內容。

  • 計算機編程的原理簡要介紹
  • 集成開發環境PyCharm
  • 變數名、數字、字元串、列表
  • 句式、注釋
  • 輸入和輸出
  • 條件判斷語句
  • 循環語句
  • 函數
  • 模塊和引入
  • 各類數據結構

2. 邏輯運算符

Python的基本邏輯運算符有三個,

and: 左右的條件均為True時,結果才為Truenor: 左右的條件有一個為True時,結果就為Truennot: 把之後的條件True變False,False變Truen

我們分別來看每個邏輯運算符:

and:

顧名思義,就是「且」的意思,中學物理裡面有涵蓋各種邏輯門的知識,這裡對應的就是與門。邏輯運算符在當同時需要判斷的條件較多時很好用,比如我們要判斷一個整數是不是小於10的偶數:

# Ask user to type an integerna = int(input(Type an integer: ))n# Determine if a is an even number less than 10nif a < 10 and a % 2 == 0:n print("It is an even number less than 10")n

如果我們輸入數字大於等於10,and左邊的條件不滿足,就不會輸出任何東西;如果我們輸入數字是個奇數,and右邊的條件不滿足,也不會有輸出。當且僅當and兩邊的條件全部滿足時,也就是and兩邊都為True時,屏幕上才會輸出第六行代碼的那句話。

or:

「或」的意思,對應或門。比如我們判斷一個數能不能被3或者被4整除:

# Ask user to type an integernb = int(input(Type an integer: ))n# Determine if b can be divided by either 3 or 4nif b % 3 == 0 or b % 4 == 0:n print("It can be divided by 3 or 4")n

如果我們輸入3、6、9之類的3的倍數,滿足or左邊的條件,顯示輸出;如果我們輸入4的倍數如4、8、12、16,滿足or右邊的條件,顯示輸出;如果輸入1、5、7、11、13之類的既不能被3整除也不能被4整除的數,則什麼也不能顯示。

not:

「非」的意思,對應非門,反轉後面的條件判斷結果。比如我們需要判斷用戶輸入的數不是0:

# Ask user to type an integernc = int(input(Type an integer: ))n# Determine if c is not 0nif not c == 0:n print("It is not zero")n

如果我們輸入0,c==0給出True,not反轉結果,if後面的最終判斷結果為False,屏幕上就沒有輸出;如果輸入非0整數,not c==0就為True,顯示輸出。

其實這裡「if not c == 0」相當於「if c != 0「,鑒於Python要優雅簡潔,顯然上面這段用not的代碼沒有!=看著心曠神怡,在這裡只是用來給大家舉例說明not怎麼用。

3. 真值表

通過真值表,可以最直觀的來看and、or和not的運算定律:

andtTRUEtFALSEnTRUEtTRUEtFALSEnFALSEtFALSEtFALSEnnortTRUEtFALSEnTRUEtTRUEtTRUEnFALSEtTRUEtFALSEnnnottTRUEtFALSEntFALSEtTRUEn

求問知乎里怎麼打表格。。。

這裡每張表第一行是條件1的結果,第一列是條件2的結果,比如在and里,當條件1(and左邊的條件)判斷為True,條件2(and右邊)判斷為True時,and的結果就為第二行第二列的True。

4. 德·摩根定律

not (A and B) = (not A) or (not B)nnot (A or B) = (not A) and (not B)n

這是一個公式,在數字系統中運用很廣泛(因為最基本),這裡拎出來專門介紹是因為很多同學,包括打了很久代碼的同學也經常會在這裡犯邏輯性的錯誤。什麼時候該用and、什麼時候該用or、and和or還有not組合起來判斷、一下子要涵蓋的條件非常多的時候,我們必須要學會明察秋毫,手握最基本的定律、從最基本的例子推斷,小心謹慎步步為營。

5. 運算符的組合應用

那麼多運算符,不一定一次只用一個,我們可以一下子用很多。

if b % 3 == 0 or b % 4 != 0:nif a < 3 and a != -8:nif x in list1 and x not in list2 and x not in list3:n

可以看到當條件堆積的時候,閱讀就會有障礙,我們可以用括弧讓代碼更清晰:

if (x in list1) and (x not in list2) and (x not in list3):n

如果我們有not,括弧就非常重要了:

not a and b n相當於 (not a) and b n而不是 not (a and b)n

and和or的判斷也很有趣,Python也跟我們一樣,讀碼的時候從左至右,所以就有了如下規律,但是這個規律個人感覺在Python中應用得並不多,在C之類的語言中倒是有很討巧的運用。

a and bn

當左邊條件a為False的時候,我們知道這整個句子不可能為True了,Python就會直接跳過b的判斷,輸出False;當a為True時,b才會被執行判斷,最後輸出結果。

a or bn

同樣,當a為True的時候,這個句子肯定為True了,直接跳過b的判斷,看也不看直接輸出True;當a為False的時候才去判斷b的正誤,最後輸出結果。

明天繼續介紹條件判斷語句,主要介紹一些有用的函數和條件語句的嵌套(其實已經出現過了)。


推薦閱讀:

有哪些看起來很簡單證明起來卻很難的問題?
對互聯網感興趣但數學不好,該怎麼選專業?
導師想要招收什麼樣的研究生?
演算法與IT就業的聯繫?

TAG:Python | 计算机科学 | 编程 |