Skip to main content

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

pyboolean-0.1.post4.tar.gz (4.1 kB view hashes)

Uploaded Source

Built Distribution

pyboolean-0.1.post4-py3-none-any.whl (5.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page