Python:條件分支 if 語句全講解

这可就有点麻烦了發表於2024-10-10

Python:條件分支 if 語句全講解


如果我拿出下面的程式碼,閣下該做何應對?

if not reset_excuted and (terminated or truncated):
	...
else:
    ...
Python:條件分支 if 語句全講解
----

前言:

消化論文程式碼的時候看到這個東西直接大腦凍結,沒想過會在這麼基礎的東西上犯難

Python:條件分支 if 語句全講解
看完即便是冰之勇者也能學會 大概吧

本文初編輯於2024.10.10

CSDN主頁:https://blog.csdn.net/rvdgdsva

部落格園主頁:https://www.cnblogs.com/hassle


目錄
  • Python:條件分支 if 語句全講解
    • 前言:
    • 運算子優先順序
      • 優先順序解析示例
        • 示例 1: 使用括號
        • 示例 2: 不使用括號
        • 複雜示例
    • 複雜if語句判斷
      • 分析條件
        • 進入上面的分支的條件
        • 進入下面的分支的條件
      • 總結條件表
      • 結論
    • 多分支語句elif
    • 德摩根定律
      • 舉例說明
        • 示例 1:第一條定律
        • 示例 2:第二條定律


運算子優先順序

在 Python 中,布林運算子的優先順序從高到低的順序如下:

  1. 括號 ():最高優先順序,可以用於明確運算順序。
  2. not:次高優先順序。
  3. and:次低優先順序。
  4. or:最低優先順序。

優先順序解析示例

示例 1: 使用括號

a = True
b = False
c = True

result = (a and not b) or c

在這個例子中:

  1. 括號 首先被計算:
    • a and not bnot b 計算為 not False,結果為 True
    • 然後,True and True 計算為 True
  2. 最後,整體表示式變為 True or c,結果是 True

示例 2: 不使用括號

x = False
y = True
z = False

result = x or y and not z

在這個例子中:

  1. 優先順序 按照 not > and > or
    • not z 計算為 not False,結果是 True
  2. 然後表示式轉為 x or y and True
  3. 接著 y and True 計算為 True
  4. 最終計算為 x or True,結果是 True

複雜示例

p = True
q = False
r = False

result = not (p and q) or r

在這個示例中:

  1. 括號 首先被計算:
    • p and q 計算為 True and False,結果是 False
  2. 然後,not False 計算為 True
  3. 最終表示式變為 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)生效

要推算在什麼情況下進入上面的分支或下面的分支,可以分析條件的每個部分。

分析條件

  1. not para_A:要求 para_AFalse

    • 這意味著要進入上面的分支,para_A 必須是 False
  2. (para_B or para_C):要求 para_Bpara_C 至少有一個為 True

    • 這意味著只要 para_BTruepara_CTrue,這個部分就成立。

進入上面的分支的條件

整體條件為 not para_A and (para_B or para_C),因此要進入上面的分支,必須滿足以下條件:

  • 條件 1para_AFalse
  • 條件 2para_BTruepara_CTrue(至少有一個為 True)。

進入下面的分支的條件

為了進入下面的分支,條件需要不成立,即:

  1. 條件 Apara_ATrue

    • 這時 not para_AFalse,條件就不成立。
  2. 條件 Bpara_AFalse,但 para_Bpara_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_AFalse,且 para_Bpara_C 至少有一個為 True
  • 進入下面的分支:當 para_ATrue 或者 para_AFalse,但 para_Bpara_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條件語句上向你發難,至少你也知道怎麼應對

德摩根定律是布林代數中的兩個重要定律,它們提供了關於邏輯運算(與、或和非)之間關係的重要公式。這兩個定律如下:

第一條定律

\[\text{not}(A\ or\ B) \equiv \text{not} A \ and\ \text{not} B \]

解釋:否定 A 或 B 相當於 AB 的否定相與。

第二條定律

\[\text{not}(A \ and\ B) \equiv \text{not} A \ or\ \text{not} B \]

解釋:否定 A 且 B 相當於 A 的否定或 B 的否定。

舉例說明

我們可以透過幾個示例來理解這些定律:

示例 1:第一條定律

考慮 A = TrueB = False

  • 計算 not(A or B)
    • A or BTrue
    • not(A or B)False
  • 計算 not A and not B
    • not AFalse
    • not BTrue
    • not A and not BFalse

結果是一致的:not(A or B) = Falsenot A and not B = False

示例 2:第二條定律

考慮 A = TrueB = False

  • 計算 not(A and B)
    • A and BFalse
    • not(A and B)True
  • 計算 not A or not B
    • not AFalse
    • not BTrue
    • not A or not BTrue

同樣,結果是相等的:not(A and B) = Truenot A or not B = True

相關文章