真值表 && 逻辑表达式

本文介绍了如何使用Python脚本将逻辑表达式转换为真值表,以及从真值表还原逻辑表达式。作者提供了一种方法处理含取反变量的情况,并分享了代码实现。虽然作者认为脚本具有一定的化简功能,但后来发现并未达到最简形式。

本文的真值表转逻辑表达式没有化到最简,最简详见:
更新链接:https://blog.csdn.net/wxkhturfun/article/details/131776977?spm=1001.2014.3001.5501

前言

遇到一个问题:想把真值表转换成逻辑表达式,真值表太长,不想手算,于是写了个脚本。但是为了检验结果的正确性,顺带写了个逻辑表达式转真值表的脚本。

一. 逻辑表达式转真值表

下面的例子是expression = abc+ (a非)b(c非),为了方便表示,用大写字母表示取非,小写字母表示原值,则expression = abc+AbC,在python代码中,该expression即被记为[(1,1,1),(0,1,0)],这里的(1,1,1)是按字母顺序的abc,这里的(0,1,0)是按字母顺序的AbC
此时已经可以表示了,但是如果还有字母d呢?即化简后d消失了,那么可以认为d是可有可无的x,为了统一处理,这里用数字2来表示x, 则此时expression=[(1,1,1,2),(0,1,0,2)] ,以此类推!


生成的真值表存储在test.csv文件中

import csv

def Write_csv(csv_file,data,encode='utf-8'):
    with open(csv_file, 'w', encoding=encode,newline='') as file_obj:
        writer = csv.writer(file_obj)
        for i in data:
            writer.writerow(i)

def gen_data(exp,N):
    data_out = []
    for i in range(2**N):
        line = bin(i)
        line = str(line)
        line = line[2:]
        line = '0'*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Greate AUK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值