看起来你可以使用包boolean.py来完成这个操作(使用pip install boolean.py
从Pip安装):
from boolean import BooleanAlgebra
exp1 = algebra.parse("(A*B*C) + (D*E) + (F*G*H*I)")
exp2 = algebra.cnf(exp1)
print(exp2.pretty())
输出:
AND(
OR(
Symbol('A'),
Symbol('D'),
Symbol('F')
),
OR(
Symbol('A'),
Symbol('D'),
Symbol('G')
),
OR(
Symbol('A'),
Symbol('D'),
Symbol('H')
),
OR(
Symbol('A'),
Symbol('D'),
Symbol('I')
),
OR(
Symbol('A'),
Symbol('E'),
Symbol('F')
),
OR(
Symbol('A'),
Symbol('E'),
Symbol('G')
),
OR(
Symbol('A'),
Symbol('E'),
Symbol('H')
),
OR(
Symbol('A'),
Symbol('E'),
Symbol('I')
),
OR(
Symbol('B'),
Symbol('D'),
Symbol('F')
),
OR(
Symbol('B'),
Symbol('D'),
Symbol('G')
),
OR(
Symbol('B'),
Symbol('D'),
Symbol('H')
),
OR(
Symbol('B'),
Symbol('D'),
Symbol('I')
),
OR(
Symbol('B'),
Symbol('E'),
Symbol('F')
),
OR(
Symbol('B'),
Symbol('E'),
Symbol('G')
),
OR(
Symbol('B'),
Symbol('E'),
Symbol('H')
),
OR(
Symbol('B'),
Symbol('E'),
Symbol('I')
),
OR(
Symbol('C'),
Symbol('D'),
Symbol('F')
),
OR(
Symbol('C'),
Symbol('D'),
Symbol('G')
),
OR(
Symbol('C'),
Symbol('D'),
Symbol('H')
),
OR(
Symbol('C'),
Symbol('D'),
Symbol('I')
),
OR(
Symbol('C'),
Symbol('E'),
Symbol('F')
),
OR(
Symbol('C'),
Symbol('E'),
Symbol('G')
),
OR(
Symbol('C'),
Symbol('E'),
Symbol('H')
),
OR(
Symbol('C'),
Symbol('E'),
Symbol('I')
)
)