将中缀布尔表达式解析为rpn,计算并生成真值表。
pyboolean的Python项目详细描述
pyboolean
将中缀布尔表达式解析为postfix(rpn),计算并生成真值表。
相容性
- python 3.x
- 任何操作系统
安装
pyboolean发布在pypi上,因此您只需要运行以下命令:
$ pip install pyboolean
用法
创建新的布尔表达式:
frompybooleanimportBoolExprbool_expr=BoolExpr('1 or 0')
打印表达式的格式化版本:
print(bool_expr)# Output: "1 + 0"
计算布尔表达式:
print(bool_expr.eval())# Output: "1"
布尔表达式还可以包含变量:
bool_expr=BoolExpr('1 . m + ( 0 + ! n ) . m')
为了用变量对表达式求值,eval()函数可以使用参数替换它们:
print(bool_expr.eval(1,0))# Output: "1"
对于带有变量的表达式,可以生成如下的真值表:
print(bool_expr.truthtable())# Output:#╔════════════╗#║ m n ┃ O ║#║━━━━━━━━╋━━━║#║ 0 0 ┃ 0 ║#║────────╂───║#║ 0 1 ┃ 0 ║#║────────╂───║#║ 1 0 ┃ 1 ║#║────────╂───║#║ 1 1 ┃ 1 ║#╚════════════╝
或者,如果需要操作原始真值表数据,请生成字典:
print(bool_expr.truthdict())# Output: "{('0', '0'): '0', ('0', '1'): '0', ('1', '0'): '1', ('1', '1'): '1'}"
最后,关于格式的说明。创建表达式时,将忽略所有空格,并接受许多不同版本的运算符符号,因此可以非常“有创意”地使用输入,无需担心:
bool_expr=BoolExpr('p+1and ¬m.(1∧p ) ∨notxand~0')print(bool_expr)# Output: "p + 1 . ! m . ( 1 . p ) + ! x . ! 0"
接受的运算符符号的完整列表:
和:
还有。&;∧
或:
或+
不:
不是!~,