Python:條件分支 if 語句全講解
如果我拿出下面的程式碼,閣下該做何應對?
if not reset_excuted and (terminated or truncated):
...
else:
...
----
前言:
消化論文程式碼的時候看到這個東西直接大腦凍結,沒想過會在這麼基礎的東西上犯難
本文初編輯於2024.10.10
CSDN主頁:https://blog.csdn.net/rvdgdsva
部落格園主頁:https://www.cnblogs.com/hassle
- Python:條件分支 if 語句全講解
- 前言:
- 運算子優先順序
- 優先順序解析示例
- 示例 1: 使用括號
- 示例 2: 不使用括號
- 複雜示例
- 優先順序解析示例
- 複雜if語句判斷
- 分析條件
- 進入上面的分支的條件
- 進入下面的分支的條件
- 總結條件表
- 結論
- 分析條件
- 多分支語句elif
- 德摩根定律
- 舉例說明
- 示例 1:第一條定律
- 示例 2:第二條定律
- 舉例說明
運算子優先順序
在 Python 中,布林運算子的優先順序從高到低的順序如下:
- 括號
()
:最高優先順序,可以用於明確運算順序。 not
:次高優先順序。and
:次低優先順序。or
:最低優先順序。
優先順序解析示例
示例 1: 使用括號
a = True
b = False
c = True
result = (a and not b) or c
在這個例子中:
- 括號 首先被計算:
a and not b
中not b
計算為not False
,結果為True
。- 然後,
True and True
計算為True
。
- 最後,整體表示式變為
True or c
,結果是True
。
示例 2: 不使用括號
x = False
y = True
z = False
result = x or y and not z
在這個例子中:
- 優先順序 按照
not
>and
>or
:not z
計算為not False
,結果是True
。
- 然後表示式轉為
x or y and True
。 - 接著
y and True
計算為True
。 - 最終計算為
x or True
,結果是True
。
複雜示例
p = True
q = False
r = False
result = not (p and q) or r
在這個示例中:
- 括號 首先被計算:
p and q
計算為True and False
,結果是False
。
- 然後,
not False
計算為True
。 - 最終表示式變為
True or r
,結果是True
。
複雜if語句判斷
在表示式 if not a and b
中,not
只對 a
生效,不影響 b
。
not
的優先順序高於and
,這意味著它會先處理a
的值。- 首先計算
not a
,這將返回a
的布林值的相反值。 - 然後,使用
and
運算子將結果與b
進行比較。
if not para_A and (para_B or para_C):
print("進入上面的分支")
else:
print("進入下面的分支")
回到開頭的示例,細細的捋一捋,在這段程式碼中:
在這裡,not
只對para_A
生效,而不對(para_B or para_C)
生效
要推算在什麼情況下進入上面的分支或下面的分支,可以分析條件的每個部分。
分析條件
-
not para_A
:要求para_A
為False
。- 這意味著要進入上面的分支,
para_A
必須是False
。
- 這意味著要進入上面的分支,
-
(para_B or para_C)
:要求para_B
或para_C
至少有一個為True
。- 這意味著只要
para_B
為True
或para_C
為True
,這個部分就成立。
- 這意味著只要
進入上面的分支的條件
整體條件為 not para_A and (para_B or para_C)
,因此要進入上面的分支,必須滿足以下條件:
- 條件 1:
para_A
是False
。 - 條件 2:
para_B
是True
或para_C
是True
(至少有一個為True
)。
進入下面的分支的條件
為了進入下面的分支,條件需要不成立,即:
-
條件 A:
para_A
是True
。- 這時
not para_A
為False
,條件就不成立。
- 這時
-
條件 B:
para_A
是False
,但para_B
和para_C
都是False
。- 這時
(para_B or para_C)
為False
,條件也不成立。
- 這時
總結條件表
para_A |
para_B |
para_C |
結果 |
---|---|---|---|
False | True | False | 進入上面的分支 |
False | False | True | 進入上面的分支 |
False | True | True | 進入上面的分支 |
True | False | False | 進入下面的分支 |
True | True | True | 進入下面的分支 |
False | False | False | 進入下面的分支 |
結論
- 進入上面的分支:當
para_A
為False
,且para_B
或para_C
至少有一個為True
。 - 進入下面的分支:當
para_A
為True
或者para_A
為False
,但para_B
和para_C
都為False
。
多分支語句elif
都寫那麼多了,乾脆再補點東西顯得更完整吧
在 Python 中,elif
是 “else if” 的縮寫,用於在 if
語句中進行多重條件判斷。它允許你在第一個 if
條件為 False
的情況下繼續檢查其他條件,從而實現更多的分支邏輯。
if condition1:
# 當 condition1 為 True 時執行的程式碼
elif condition2:
# 當 condition1 為 False 且 condition2 為 True 時執行的程式碼
elif condition3:
# 當 condition1 和 condition2 都為 False 且 condition3 為 True 時執行的程式碼
else:
# 當上面的所有條件都為 False 時執行的程式碼
德摩根定律
在j實際程式碼應用中,你基本用不上這個定律,上面的東西已經可以解決絕大部分問題了。但如果程式非要在if
條件語句上向你發難,至少你也知道怎麼應對
德摩根定律是布林代數中的兩個重要定律,它們提供了關於邏輯運算(與、或和非)之間關係的重要公式。這兩個定律如下:
第一條定律:
解釋:否定 A 或 B
相當於 A
和 B
的否定相與。
第二條定律:
解釋:否定 A 且 B
相當於 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
結果是一致的: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
同樣,結果是相等的:not(A and B) = True
和 not A or not B = True
。