初看,真与假,0和1,逻辑不是真就是假,有啥看的呢?其实你看完就会感觉多么的奇妙。
不信?给你们一个列子 :大家猜猜他们能简化成什么?
咱们假设三个命题:A绿灯亮为true,灭为false ;B黄灯亮为true,灭为false;C红灯亮为true,灭为false.
如果不看这一章,写程序肯定会这么判断:
if A and B and C: print("按下按钮") if not B and C:
print("按下按钮") if not A and C: print("按下按钮") if not A and not B and not C: print("按下按钮")
我想大部分的程序员都会这么写吧,包括我在内。但是如果我们通过数学的逻辑分析后,会得出一个特别简单的结论就是:当A灯灭(即 not A)或者红灯亮(即C)的时候按下按钮即可。不相信?跟着我的步骤走一下就明白了。
我们把规则通过卡诺图画出来,如下:
这样通过集合看,就是A是false或者C为true就是包含了上面的所有的勾,也就等同于我们之前的那四个条件:代码也就简化成下面的代码了,神奇吧!
if not A or C: print("按下按钮")
如果用这个图您不理解,可以用高中的集合也是能看出来的,比如先把条件反向集合可以得出如下结论:
A绿灯亮,B黄灯亮,C红灯灭 的时候不按开关
A绿灯亮,B黄灯灭,C红灯灭 的时候不按开关
上面的合起来就是 A绿灯亮,C红灯灭 的时候不按开关,再反向一下就是 A绿灯灭(not A)或者红灯亮(C) 按开关,结论一样