第二章 逻辑-真与假的二元世界

  初看,真与假,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) 按开关,结论一样

  

猜你喜欢

转载自www.cnblogs.com/libotao/p/12312275.html