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

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file pyboolean-0.1.post4.tar.gz.

File metadata

  • Download URL: pyboolean-0.1.post4.tar.gz
  • Upload date:
  • Size: 4.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for pyboolean-0.1.post4.tar.gz
Algorithm Hash digest
SHA256 9479ee144e91d10a7a3ea7043c390caae15a81b3ceb2bd006c684750f20e2ef7
MD5 0e91e33d10926bf7a499e2472fb04175
BLAKE2b-256 eb1965d7b1d97cd9a89e839345f1ff80d4abb99b268905a831027f3a0f54cee9

See more details on using hashes here.

File details

Details for the file pyboolean-0.1.post4-py3-none-any.whl.

File metadata

  • Download URL: pyboolean-0.1.post4-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for pyboolean-0.1.post4-py3-none-any.whl
Algorithm Hash digest
SHA256 23b0f9c7ab510ae3f3126df934f575f8dd3df4aacab8dc0d425ddd33ba23a469
MD5 20bd3b8c9510d3e1c7be66025b2545c5
BLAKE2b-256 55984d807bcbb929d58a532f6d4b7ab686207948a82f7341af03d8472dcdbf23

See more details on using hashes here.

Supported by

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