- SymPy 教程
- SymPy - 首頁
- SymPy - 簡介
- SymPy - 安裝
- SymPy - 符號計算
- SymPy - 數值
- SymPy - 符號
- SymPy - 替換
- SymPy - sympify() 函式
- SymPy - evalf() 函式
- SymPy - Lambdify() 函式
- SymPy - 邏輯表示式
- SymPy - 查詢
- SymPy - 簡化
- SymPy - 導數
- SymPy - 積分
- SymPy - 矩陣
- SymPy - 函式類
- SymPy - 四元數
- SymPy - 求解器
- SymPy - 繪圖
- SymPy - 實體
- SymPy - 集合
- SymPy - 列印
- SymPy 有用資源
- SymPy - 快速指南
- SymPy - 有用資源
- SymPy - 討論
SymPy - 邏輯表示式
布林函式在sympy.basic.booleanarg 模組中定義。可以使用標準 Python 運算子 & (And)、| (Or)、~ (Not) 以及 >> 和 << 來構建布林表示式。布林表示式繼承自 SymPy 核心模組中定義的 Basic 類。
BooleanTrue 函式
此函式等價於 Python 核心中的 True。它返回一個單例,可以透過 S.true 獲取。
>>> from sympy import * >>> x=sympify(true) >>> x, S.true
以上程式碼片段給出以下輸出:
(True, True)
BooleanFalse 函式
類似地,此函式等價於 Python 中的布林 False,可以透過 S.false 訪問。
>>> from sympy import * >>> x=sympify(false) >>> x, S.false
以上程式碼片段給出以下輸出:
(False, False)
And 函式
邏輯 AND 函式評估其兩個引數,如果其中任何一個為 False,則返回 False。該函式模擬 & 運算子。
>>> from sympy import *
>>> from sympy.logic.boolalg import And
>>> x,y=symbols('x y')
>>> x=True
>>> y=True
>>> And(x,y), x"&"y
以上程式碼片段給出以下輸出:
(True, True)
>>> y=False >>> And(x,y), x"&"y
以上程式碼片段給出以下輸出:
(False, False)
Or 函式
此函式評估兩個布林引數,如果其中任何一個為 True,則返回 True。| 運算子方便地模擬了其行為。
>>> from sympy import *
>>> from sympy.logic.boolalg import Or
>>> x,y=symbols('x y')
>>> x=True
>>> y=False
>>> Or(x,y), x|y
以上程式碼片段給出以下輸出:
(True, True)
>>> x=False >>> y=False >>> Or(x,y), x|y
以上程式碼片段給出以下輸出:
(False, False)
Not 函式
邏輯 Not 函式導致布林引數取反。如果其引數為 False,則返回 True;如果為 True,則返回 False。~ 運算子執行與 Not 函式類似的操作。如下例所示:
>>> from sympy import *
>>> from sympy.logic.boolalg import Or, And, Not
>>> x,y=symbols('x y')
>>> x=True
>>> y=False
>>> Not(x), Not(y)
以上程式碼片段給出以下輸出:
(False, True)
>>> Not(And(x,y)), Not(Or(x,y))
以上程式碼片段給出以下輸出:
(True, False)
Xor 函式
邏輯 XOR(異或)函式如果引數中有奇數個 True 而其餘為 False,則返回 True;如果引數中有偶數個 True 而其餘為 False,則返回 False。^ 運算子執行類似的操作。
>>> from sympy import *
>>> from sympy.logic.boolalg import Xor
>>> x,y=symbols('x y')
>>> x=True
>>> y=False
>>> Xor(x,y), x^y
以上程式碼片段給出以下輸出:
(True, True)
>>> a,b,c,d,e=symbols('a b c d e')
>>> a,b,c,d,e=(True, False, True, True, False)
>>> Xor(a,b,c,d,e)
以上程式碼片段給出以下輸出:
True
在上述情況下,三個(奇數)引數為 True,因此 Xor 返回 true。但是,如果 True 引數的數量為偶數,則結果為 False,如下所示:
>>> a,b,c,d,e=(True, False, False, True, False) >>> Xor(a,b,c,d,e)
以上程式碼片段給出以下輸出:
False
Nand 函式
此函式執行邏輯 NAND 操作。它評估其引數,如果其中任何一個為 False,則返回 True;如果全部為 True,則返回 False。
>>> from sympy import *
>>> from sympy.logic.boolalg import Nand
>>> a,b,c=symbols('a b c')
>>> a,b,c=(True, False, True)
>>> Nand(a,b,c), Nand(a,c)
以上程式碼片段給出以下輸出:
(True, False)
Nor 函式
此函式執行邏輯 NOR 操作。它評估其引數,如果其中任何一個為 True,則返回 False;如果全部為 False,則返回 True。
>>> from sympy import *
>>> from sympy.logic.boolalg import Nor
>>> a,b,c=symbols('a b c')
>>> a,b,c=(True, False, True)
>>> Nor(a,b,c), Nor(a,c)
以上程式碼片段給出以下輸出:
(False, False)
請注意,即使 SymPy 為 Xor 提供了 ^ 運算子,為 Not 提供了 ~,為 Or 提供了 |,為 And 提供了 & 函式作為便利,但它們在 Python 中的正常用法是作為按位運算子。因此,如果運算元是整數,則結果將不同。
Equivalent 函式
此函式返回等價關係。Equivalent(A, B) 當且僅當 A 和 B 都為 True 或都為 False 時為 True。如果所有引數在邏輯上等價,則該函式返回 True。否則返回 False。
>>> from sympy import *
>>> from sympy.logic.boolalg import Equivalent
>>> a,b,c=symbols('a b c')
>>> a,b,c=(True, False, True)
>>> Equivalent(a,b), Equivalent(a,c)
以上程式碼片段給出以下輸出:
(False, True)
ITE 函式
此函式充當程式語言中的 If then else 子句。ITE(A, B, C) 評估並返回 B 的結果,如果 A 為真,否則返回 C 的結果。所有引數必須為布林值。
>>> from sympy import * >>> from sympy.logic.boolalg import ITE >>> a,b,c=symbols('a b c') >>> a,b,c=(True, False, True)
>>> ITE(a,b,c), ITE(a,c,b)
以上程式碼片段給出以下輸出: