SymPy - Biểu thức logic

Các hàm boolean được định nghĩa trong sympy.basic.booleanarg module. Có thể xây dựng biểu thức Boolean với các toán tử python tiêu chuẩn & (Và), | (Hoặc), ~ (Không) cũng như với >> và <<. Biểu thức Boolean kế thừa từ lớp Cơ bản được định nghĩa trong mô-đun cốt lõi của SymPy.

Hàm BooleanTrue

Hàm này tương đương với True như trong Python lõi. Nó trả về một singleton có thể được truy xuất bởi S.true.

>>> from sympy import * 
>>> x=sympify(true) 
>>> x, S.true

Đoạn mã trên cho kết quả sau:

(Đúng rồi)

Hàm BooleanFalse

Tương tự, hàm này tương đương với Boolean False trong Python và có thể được truy cập bởi S.false

>>> from sympy import * 
>>> x=sympify(false) 
>>> x, S.false

Đoạn mã trên cho kết quả sau:

(Sai, Sai)

Và chức năng

Một hàm AND lôgic đánh giá hai đối số của nó và trả về Sai nếu một trong hai đối số đó là Sai. Chức năng mô phỏng & toán tử.

>>> from sympy import * 
>>> from sympy.logic.boolalg import And 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=True 
>>> And(x,y), x"&"y

Đoạn mã trên cho kết quả sau:

(Đúng rồi)

>>> y=False 
>>> And(x,y), x"&"y

Đoạn mã trên cho kết quả sau:

(Sai, Sai)

Hoặc chức năng

Hàm này đánh giá hai đối số Boolean và trả về True nếu một trong hai đối số là True. Các | nhà điều hành thuận tiện mô phỏng hành vi của nó.

>>> from sympy import * 
>>> from sympy.logic.boolalg import Or 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=False 
>>> Or(x,y), x|y

Đoạn mã trên cho kết quả sau:

(Đúng rồi)

>>> x=False 
>>> y=False 
>>> Or(x,y), x|y

Đoạn mã trên cho kết quả sau:

(Sai, Sai)

Không hoạt động

Một hàm Logical Not dẫn đến việc phủ định đối số Boolean. Nó trả về True nếu đối số của nó là False và trả về False nếu True. Toán tử ~ thực hiện thao tác tương tự như hàm Not. Nó được hiển thị trong ví dụ dưới đây -

>>> from sympy import * 
>>> from sympy.logic.boolalg import Or, And, Not 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=False 
>>> Not(x), Not(y)

Đoạn mã trên cho kết quả sau:

(Sai đúng)

>>> Not(And(x,y)), Not(Or(x,y))

Đoạn mã trên cho kết quả sau:

(Đúng sai)

Hàm Xor

Hàm Logical XOR (độc quyền OR) trả về True nếu một số lẻ của các đối số là Đúng và phần còn lại là Sai và trả về Sai nếu một số chẵn của các đối số là Đúng và phần còn lại là Sai. Hoạt động tương tự được thực hiện bởi toán tử ^.

>>> from sympy import * 
>>> from sympy.logic.boolalg import Xor 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=False

>>> Xor(x,y), x^y

Đoạn mã trên cho kết quả sau:

(Đúng rồi)

>>> 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)

Đoạn mã trên cho kết quả sau:

Thật

Trong trường hợp trên, ba đối số (số lẻ) là True, do đó Xor trả về true. Tuy nhiên, nếu số lượng đối số True là chẵn, nó dẫn đến False, như được hiển thị bên dưới:

>>> a,b,c,d,e=(True, False, False, True, False) 
>>> Xor(a,b,c,d,e)

Đoạn mã trên cho kết quả sau:

Sai

Hàm Nand

Hàm này thực hiện hoạt động Logical NAND. Nó đánh giá các đối số của nó và trả về True nếu bất kỳ đối số nào trong số chúng là False và False nếu chúng đều đúng.

>>> 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)

Đoạn mã trên cho kết quả sau:

(Đúng sai)

Chức năng cũng không

Hàm này thực hiện phép toán NOR logic. Nó đánh giá các đối số của nó và trả về Sai nếu bất kỳ đối số nào trong số chúng là Đúng và Đúng nếu tất cả chúng đều là Sai.

>>> 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)

Đoạn mã trên cho kết quả sau:

(Sai, Sai)

Lưu ý rằng mặc dù SymPy cung cấp toán tử ^ cho Xor, ~ cho Not, | Các hàm for Or và & for And là sự tiện lợi, việc sử dụng thông thường của chúng trong Python cũng là các toán tử bit. Do đó, nếu toán hạng là số nguyên, kết quả sẽ khác.

Chức năng tương đương

Hàm này trả về quan hệ tương đương. Tương đương (A, B) là Đúng nếu và chỉ khi A và B đều Đúng hoặc cả hai Sai. Hàm trả về True nếu tất cả các đối số là tương đương về mặt logic. Trả về False nếu không.

>>> 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)

Đoạn mã trên cho kết quả sau:

(Sai đúng)

Chức năng ITE

Hàm này hoạt động như mệnh đề If then else trong ngôn ngữ lập trình .ITE (A, B, C) đánh giá và trả về kết quả của B nếu A đúng, nếu không nó trả về kết quả của C. Tất cả các args phải là Boolean.

>>> 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)

Đoạn mã trên cho kết quả sau:

(Sai đúng)