Python條件分支?if?語句全講解(一文掌握)
如果我拿出下面的代碼,閣下該做何應(yīng)對(duì)?
if not reset_excuted and (terminated or truncated):
...
else:
...運(yùn)算符優(yōu)先級(jí)
在 Python 中,布爾運(yùn)算符的優(yōu)先級(jí)從高到低的順序如下:
- 括號(hào)
():最高優(yōu)先級(jí),可以用于明確運(yùn)算順序。 not:次高優(yōu)先級(jí)。and:次低優(yōu)先級(jí)。or:最低優(yōu)先級(jí)。
優(yōu)先級(jí)解析示例
示例 1: 使用括號(hào)
a = True b = False c = True result = (a and not b) or c
在這個(gè)例子中:
- 括號(hào) 首先被計(jì)算:
a and not b中not b計(jì)算為not False,結(jié)果為True。- 然后,
True and True計(jì)算為True。
- 最后,整體表達(dá)式變?yōu)?nbsp;
True or c,結(jié)果是True。
示例 2: 不使用括號(hào)
x = False y = True z = False result = x or y and not z
在這個(gè)例子中:
- 優(yōu)先級(jí) 按照
not>and>or:not z計(jì)算為not False,結(jié)果是True。
- 然后表達(dá)式轉(zhuǎn)為
x or y and True。 - 接著
y and True計(jì)算為True。 - 最終計(jì)算為
x or True,結(jié)果是True。
復(fù)雜示例
p = True q = False r = False result = not (p and q) or r
在這個(gè)示例中:
- 括號(hào) 首先被計(jì)算:
p and q計(jì)算為True and False,結(jié)果是False。
- 然后,
not False計(jì)算為True。 - 最終表達(dá)式變?yōu)?nbsp;
True or r,結(jié)果是True。
復(fù)雜if語句判斷
在表達(dá)式 if not a and b 中,not 只對(duì) a 生效,不影響 b。
not的優(yōu)先級(jí)高于and,這意味著它會(huì)先處理a的值。- 首先計(jì)算
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只對(duì)para_A生效,而不對(duì)(para_B or para_C)生效
要推算在什么情況下進(jìn)入上面的分支或下面的分支,可以分析條件的每個(gè)部分。
分析條件
not para_A:要求para_A為False。- 這意味著要進(jìn)入上面的分支,
para_A必須是False。
- 這意味著要進(jìn)入上面的分支,
(para_B or para_C):要求para_B或para_C至少有一個(gè)為True。- 這意味著只要
para_B為True或para_C為True,這個(gè)部分就成立。
- 這意味著只要
進(jìn)入上面的分支的條件
整體條件為 not para_A and (para_B or para_C),因此要進(jìn)入上面的分支,必須滿足以下條件:
- 條件 1:
para_A是False。 - 條件 2:
para_B是True或para_C是True(至少有一個(gè)為True)。
進(jìn)入下面的分支的條件
為了進(jìn)入下面的分支,條件需要不成立,即:
條件 A:
para_A是True。- 這時(shí)
not para_A為False,條件就不成立。
- 這時(shí)
條件 B:
para_A是False,但para_B和para_C都是False。- 這時(shí)
(para_B or para_C)為False,條件也不成立。
- 這時(shí)
總結(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至少有一個(gè)為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)行多重條件判斷。它允許你在第一個(gè) if 條件為 False 的情況下繼續(xù)檢查其他條件,從而實(shí)現(xiàn)更多的分支邏輯。
if condition1:
# 當(dāng) condition1 為 True 時(shí)執(zhí)行的代碼
elif condition2:
# 當(dāng) condition1 為 False 且 condition2 為 True 時(shí)執(zhí)行的代碼
elif condition3:
# 當(dāng) condition1 和 condition2 都為 False 且 condition3 為 True 時(shí)執(zhí)行的代碼
else:
# 當(dāng)上面的所有條件都為 False 時(shí)執(zhí)行的代碼德摩根定律
在j實(shí)際代碼應(yīng)用中,你基本用不上這個(gè)定律,上面的東西已經(jīng)可以解決絕大部分問題了。但如果程序非要在if條件語句上向你發(fā)難,至少你也知道怎么應(yīng)對(duì)
德摩根定律是布爾代數(shù)中的兩個(gè)重要定律,它們提供了關(guān)于邏輯運(yùn)算(與、或和非)之間關(guān)系的重要公式。這兩個(gè)定律如下:
第一條定律:
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 的否定。
舉例說明
我們可以通過幾個(gè)示例來理解這些定律:
示例 1:第一條定律
考慮 A = True 和 B = False:
- 計(jì)算
not(A or B):A or B是Truenot(A or B)是False
- 計(jì)算
not A and not B:not A是Falsenot B是Truenot A and not B是False
結(jié)果是一致的:not(A or B) = False 和 not A and not B = False。
示例 2:第二條定律
考慮 A = True 和 B = False:
- 計(jì)算
not(A and B):A and B是Falsenot(A and B)是True
- 計(jì)算
not A or not B:not A是Falsenot B是Truenot 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)圖片與視頻互轉(zhuǎn)代碼實(shí)戰(zhàn)(親測有效)
圖片轉(zhuǎn)視頻,視頻轉(zhuǎn)圖片手機(jī)一操作,立馬轉(zhuǎn)換過來,那么基于代碼是如何操作的呢?下面小編給大家?guī)砹薖ython實(shí)現(xiàn)圖片與視頻互轉(zhuǎn)代碼實(shí)戰(zhàn),感興趣的朋友跟隨小編一起看看吧2021-12-12
這篇文章主要為大家介紹了python中selenium模塊的安裝和配置環(huán)境變量教程、提取數(shù)據(jù)操作、無頭模式,有需要的朋友可以借鑒參考下,希望能夠?qū)Υ蠹矣兴鶐椭?/div> 2022-10-10
Django的models中on_delete參數(shù)詳解
這篇文章主要介紹了Django的models中on_delete參數(shù)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python使用pygame模塊編寫俄羅斯方塊游戲的代碼實(shí)例
這篇文章主要介紹了Python使用pygame模塊編寫俄羅斯方塊游戲的代碼實(shí)例,最基本的方塊變換和行消除等功能都在代碼中一一體現(xiàn),需要的朋友可以參考下2015-12-12
Python 開發(fā)工具PyCharm安裝教程圖文詳解(新手必看)
PyCharm是一種Python IDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時(shí)提高其效率的工具,比如調(diào)試、語法高亮、Project管理、代碼跳轉(zhuǎn)、智能提示、自動(dòng)完成、單元測試、版本控制。今天通過本文給大家分享PyCharm安裝教程,一起看看吧2020-02-02
Python中 pickle 模塊的 dump() 和 load()&
Python 的 pickle 模塊用于實(shí)現(xiàn)二進(jìn)制序列化和反序列化,一個(gè)對(duì)象可以被序列化到文件中,然后可以從文件中恢復(fù),這篇文章主要介紹了Python中 pickle 模塊的 dump() 和 load() 方法詳解,需要的朋友可以參考下2022-12-12最新評(píng)論

