首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蟒蛇里的真值表?

蟒蛇里的真值表?
EN

Stack Overflow用户
提问于 2021-02-03 09:45:27
回答 2查看 1.3K关注 0票数 1

我在Python中工作,我想以真值表的形式操作数据。我需要简化表格,把表格转换成布尔表达式等等.我发现了sympy,但它似乎没有提供对真值表的本地支持。我还找到了其他一些实用程序,比如pyeda,但是在深入其中一个工具之前,我想知道是否有任何普遍接受的标准包可以满足我的需要。

有什么想法吗?提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-21 08:05:07

使用sympy从布尔表达式生成真值表并不那么困难。

在下面的程序中,布尔表达式用于生成可满足的模型列表。使用生成器对所有可能的变量真相组合,它列出了完整的真值表。

代码语言:javascript
复制
import itertools
from sympy import *
from sympy.logic import simplify_logic
from sympy.logic.inference import satisfiable

my_names = 'ABCD'
A,B,C,D = symbols(','.join(my_names))
e1 = Nor(Nor(A, B), Or(C, D))
my_symbols = sorted(e1.atoms(Symbol), key=lambda x: x.name)
print('Set of symbols used:', my_symbols)
models = satisfiable(e1, all_models=True)
sat_mods = []
for m in models:
    sat_mods.append(dict(sorted(m.items(), key=lambda x: x[0].name)))
truth_tab = []
for c in itertools.product((True, False), repeat=len(my_symbols)):
    model = dict(zip(my_symbols, c))
    truth_tab.append((model, model in sat_mods))
print(truth_tab)

输出:

代码语言:javascript
复制
# Set of symbols used: [A, B, C, D]
# [({A: True, B: True, C: True, D: True}, False),
#  ({A: True, B: True, C: True, D: False}, False),
# ...
票数 1
EN

Stack Overflow用户

发布于 2021-07-21 08:21:22

我有一个库,用于从布尔表达式:https://github.com/salt-die/truth_tables创建真值表。

示例用法:

代码语言:javascript
复制
>>> from truth_tables import TruthTable
>>> my_table = TruthTable('p or q', '~p -> q', 'T and ~T')
>>> print(my_table)
┌───┬───┬────────┬─────────┬──────────┐
│ p │ q │ p or q │ ~p -> q │ T and ~T │
├───┼───┼────────┼─────────┼──────────┤
│ F │ F │   F    │    F    │    F     │
│ F │ T │   T    │    T    │    F     │
│ T │ F │   T    │    T    │    F     │
│ T │ T │   T    │    T    │    F     │
└───┴───┴────────┴─────────┴──────────┘
>>> print(my_table.ast)
Or
├─Var('p')
╰─Var('q')

Implies
├─Negate
│ ╰─Var('p')
╰─Var('q')

And
├─Const(True)
╰─Negate
  ╰─Const(True)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66024903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档