Parse infix boolean expressions to RPN, evaluate and generate truth tables.
Project description
pyboolean
Parse infix boolean expressions to postfix (RPN), evaluate and generate truth tables.
Compatibilities
- Python 3.x
- Any Operating System
Installation
pyboolean is published on PyPi, so you only need to run the following command:
$ pip install pyboolean
Usage
Creating a new boolean expression:
from pyboolean import BoolExpr
bool_expr = BoolExpr('1 or 0')
Printing the formatted version of the expression:
print(bool_expr)
# Output: "1 + 0"
Evaluating our boolean expression:
print(bool_expr.eval())
# Output: "1"
A boolean expression can also include variables:
bool_expr = BoolExpr('1 . m + ( 0 + ! n ) . m')
In order to evaluate an expression with variables, the eval() function can take arguments to replace them:
print(bool_expr.eval(1, 0))
# Output: "1"
For expressions with variables, one can generate a truth table like so:
print(bool_expr.truthtable())
# Output:
#╔════════════╗
#║ m n ┃ O ║
#║━━━━━━━━╋━━━║
#║ 0 0 ┃ 0 ║
#║────────╂───║
#║ 0 1 ┃ 0 ║
#║────────╂───║
#║ 1 0 ┃ 1 ║
#║────────╂───║
#║ 1 1 ┃ 1 ║
#╚════════════╝
Or if you need to manipulate the raw truth table data, generate a dictionary:
print(bool_expr.truthdict())
# Output: "{('0', '0'): '0', ('0', '1'): '0', ('1', '0'): '1', ('1', '1'): '1'}"
Finally, a note on formatting. When creating an expression, all spaces are ignored and many different versions of the operator symbols are accepted, so one can be very 'creative' with the input and not need to worry:
bool_expr = BoolExpr('p+1and ¬m.(1∧p ) ∨notxand~0')
print(bool_expr)
# Output: "p + 1 . ! m . ( 1 . p ) + ! x . ! 0"
Full list of accepted operator symbols:
AND:
and . & ∧
OR:
or + | ∨
NOT:
not ! ~ ¬
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyboolean-0.1.post4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23b0f9c7ab510ae3f3126df934f575f8dd3df4aacab8dc0d425ddd33ba23a469 |
|
MD5 | 20bd3b8c9510d3e1c7be66025b2545c5 |
|
BLAKE2b-256 | 55984d807bcbb929d58a532f6d4b7ab686207948a82f7341af03d8472dcdbf23 |