Python條件分支?if?語句全講解(一文掌握)
如果我拿出下面的代碼,閣下該做何應(yīng)對?
if not reset_excuted and (terminated or truncated): ... else: ...
運(yùn)算符優(yōu)先級
在 Python 中,布爾運(yùn)算符的優(yōu)先級從高到低的順序如下:
- 括號
()
:最高優(yōu)先級,可以用于明確運(yùn)算順序。 not
:次高優(yōu)先級。and
:次低優(yōu)先級。or
:最低優(yōu)先級。
優(yōu)先級解析示例
示例 1: 使用括號
a = True b = False c = True result = (a and not b) or c
在這個例子中:
- 括號 首先被計算:
a and not b
中not b
計算為not False
,結(jié)果為True
。- 然后,
True and True
計算為True
。
- 最后,整體表達(dá)式變?yōu)?nbsp;
True or c
,結(jié)果是True
。
示例 2: 不使用括號
x = False y = True z = False result = x or y and not z
在這個例子中:
- 優(yōu)先級 按照
not
>and
>or
:not z
計算為not False
,結(jié)果是True
。
- 然后表達(dá)式轉(zhuǎn)為
x or y and True
。 - 接著
y and True
計算為True
。 - 最終計算為
x or True
,結(jié)果是True
。
復(fù)雜示例
p = True q = False r = False result = not (p and q) or r
在這個示例中:
- 括號 首先被計算:
p and q
計算為True and False
,結(jié)果是False
。
- 然后,
not False
計算為True
。 - 最終表達(dá)式變?yōu)?nbsp;
True or r
,結(jié)果是True
。
復(fù)雜if語句判斷
在表達(dá)式 if not a and b
中,not
只對 a
生效,不影響 b
。
not
的優(yōu)先級高于and
,這意味著它會先處理a
的值。- 首先計算
not a
,這將返回a
的布爾值的相反值。 - 然后,使用
and
運(yùn)算符將結(jié)果與b
進(jìn)行比較。
if not para_A and (para_B or para_C): print("進(jìn)入上面的分支") else: print("進(jìn)入下面的分支")
回到開頭的示例,細(xì)細(xì)的捋一捋,在這段代碼中:
在這里,not
只對para_A
生效,而不對(para_B or para_C)
生效
要推算在什么情況下進(jìn)入上面的分支或下面的分支,可以分析條件的每個部分。
分析條件
not para_A
:要求para_A
為False
。- 這意味著要進(jìn)入上面的分支,
para_A
必須是False
。
- 這意味著要進(jìn)入上面的分支,
(para_B or para_C)
:要求para_B
或para_C
至少有一個為True
。- 這意味著只要
para_B
為True
或para_C
為True
,這個部分就成立。
- 這意味著只要
進(jìn)入上面的分支的條件
整體條件為 not para_A and (para_B or para_C)
,因此要進(jìn)入上面的分支,必須滿足以下條件:
- 條件 1:
para_A
是False
。 - 條件 2:
para_B
是True
或para_C
是True
(至少有一個為True
)。
進(jìn)入下面的分支的條件
為了進(jìn)入下面的分支,條件需要不成立,即:
條件 A:
para_A
是True
。- 這時
not para_A
為False
,條件就不成立。
- 這時
條件 B:
para_A
是False
,但para_B
和para_C
都是False
。- 這時
(para_B or para_C)
為False
,條件也不成立。
- 這時
總結(jié)條件表
para_A | para_B | para_C | 結(jié)果 |
---|---|---|---|
False | True | False | 進(jìn)入上面的分支 |
False | False | True | 進(jìn)入上面的分支 |
False | True | True | 進(jìn)入上面的分支 |
True | False | False | 進(jìn)入下面的分支 |
True | True | True | 進(jìn)入下面的分支 |
False | False | False | 進(jìn)入下面的分支 |
結(jié)論
- 進(jìn)入上面的分支:當(dāng)
para_A
為False
,且para_B
或para_C
至少有一個為True
。 - 進(jìn)入下面的分支:當(dāng)
para_A
為True
或者para_A
為False
,但para_B
和para_C
都為False
。
多分支語句elif
都寫那么多了,干脆再補(bǔ)點(diǎn)東西顯得更完整吧
在 Python 中,elif
是 “else if” 的縮寫,用于在 if
語句中進(jìn)行多重條件判斷。它允許你在第一個 if
條件為 False
的情況下繼續(xù)檢查其他條件,從而實(shí)現(xiàn)更多的分支邏輯。
if condition1: # 當(dāng) condition1 為 True 時執(zhí)行的代碼 elif condition2: # 當(dāng) condition1 為 False 且 condition2 為 True 時執(zhí)行的代碼 elif condition3: # 當(dāng) condition1 和 condition2 都為 False 且 condition3 為 True 時執(zhí)行的代碼 else: # 當(dāng)上面的所有條件都為 False 時執(zhí)行的代碼
德摩根定律
在j實(shí)際代碼應(yīng)用中,你基本用不上這個定律,上面的東西已經(jīng)可以解決絕大部分問題了。但如果程序非要在if
條件語句上向你發(fā)難,至少你也知道怎么應(yīng)對
德摩根定律是布爾代數(shù)中的兩個重要定律,它們提供了關(guān)于邏輯運(yùn)算(與、或和非)之間關(guān)系的重要公式。這兩個定律如下:
第一條定律:
not(A or B)≡notA and notB
解釋:否定 A 或 B
相當(dāng)于 A
和 B
的否定相與。
第二條定律:
not(A and B)≡notA or notB
解釋:否定 A 且 B
相當(dāng)于 A
的否定或 B
的否定。
舉例說明
我們可以通過幾個示例來理解這些定律:
示例 1:第一條定律
考慮 A = True
和 B = False
:
- 計算
not(A or B)
:A or B
是True
not(A or B)
是False
- 計算
not A and not B
:not A
是False
not B
是True
not A and not B
是False
結(jié)果是一致的:not(A or B) = False
和 not A and not B = False
。
示例 2:第二條定律
考慮 A = True
和 B = False
:
- 計算
not(A and B)
:A and B
是False
not(A and B)
是True
- 計算
not A or not B
:not A
是False
not B
是True
not A or not B
是True
同樣,結(jié)果是相等的:not(A and B) = True
和 not A or not B = True
。
到此這篇關(guān)于Python條件分支 if 語句全講解的文章就介紹到這了,更多相關(guān)Python條件分支 if 語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)將文件名批量命名為四位數(shù)or五位數(shù)
這篇文章主要介紹了python實(shí)現(xiàn)將文件名批量命名為四位數(shù)or五位數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08django mysql數(shù)據(jù)庫及圖片上傳接口詳解
這篇文章主要介紹了django mysql數(shù)據(jù)庫及圖片上傳接口詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)從字典中提取子集的方法示例
這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)從字典中提取子集的方法,涉及Python字典推導(dǎo)式的相關(guān)使用技巧,需要的朋友可以參考下2018-03-03python實(shí)現(xiàn)簡單聊天室功能 可以私聊
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單聊天室功能,可以進(jìn)行私聊,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07Python實(shí)現(xiàn)自動上京東搶手機(jī)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)自動上京東搶手機(jī)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02python刪除文件、清空目錄的實(shí)現(xiàn)方法
這篇文章主要介紹了python刪除文件、清空目錄的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Qt5.14 與 OpenCV4.5 教程之圖片增強(qiáng)效果
這篇文章主要介紹了Qt5.14 與 OpenCV4.5 教程之圖片增強(qiáng)效果的實(shí)現(xiàn),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-11-11