德摩根定律测评:避坑流程
德摩根定律测评最容易暴露的问题,不是公式背不熟,而是否定范围、连接词替换和自然语言翻译出错。本文按检查流程拆解常见坑点,用查询条件案例说明如何一步步排错,避免把“不是A且B”误写成“不是A或不是B”。
第一步:先测否定范围
做德摩根定律测评时,第一项不是急着套公式,而是确认“非”到底作用到哪里。很多错误来自把 ¬(A∧B) 看成 ¬A∧B,少拆了一层括号。比如业务规则写着“不能同时满足会员且已过期”,逻辑应是 ¬(会员∧过期),而不是 ¬会员∧过期。前者表示只要不是二者同时发生即可,后者却限定为非会员并且过期,范围明显变窄。
第二步:再换连接词
确认括号后,再执行核心变形:非括号、换连接、逐项取反。¬(A∧B)=¬A∨¬B,¬(A∨B)=¬A∧¬B。避坑关键是“且变或、或变且”必须同时发生,只取反不换词,或只换词不取反,都会得到半成品。测评中建议把公式写成三列:原式、拆括号、验证式,强制自己看到每一步,而不是凭感觉跳到答案。
第三步:用真值表复核
公式写完后,用四种取值做一次小型真值表,是最稳的测评方法。以 ¬(A∨B) 为例,只有 A 假、B 假时原式为真;对应的 ¬A∧¬B 也只有这一格为真。若你写成 ¬A∨¬B,会在 A 假、B 真或 A 真、B 假时也为真,立刻暴露扩大条件的问题。真值表虽然慢,但对考试、代码评审和规则配置都很可靠。
第四步:放回场景检验
德摩根定律测评不能只看符号正确,还要把结果放回原语义。假设筛选条件是“排除年龄小于18或未实名的用户”,原式是 ¬(未成年∨未实名),变形后是 成年∧已实名。若写成 非未成年∨非未实名,就会放进“成年但未实名”或“未成年但实名”的用户,造成风控漏洞。场景复读能检查公式是否符合业务边界。
第五步:记录高频坑
常见坑可以归成三类:一是忽略括号,把整体否定误当局部否定;二是连接词没有反转;三是自然语言里的“除非、至少、并非都”没有先翻译成清晰命题。遇到“并非所有订单都已支付”,应先写成 ¬(全部已支付),再理解为“至少有一个未支付”。测评结论很明确:会背公式只是入门,能稳定识别范围和语义,才算真正掌握德摩根定律。
常见问题
德摩根定律测评时最常错在哪里?
最常错在否定范围和连接词替换。先确认非号是否覆盖整个括号,再执行且变或、或变且,最后逐项取反。
怎么判断德摩根定律变形是否正确?
可用真值表验证四种组合,或把变形结果放回原场景复读。两者结果一致,通常说明公式和语义都可靠。
德摩根定律适合用在代码判断里吗?
适合,尤其适合简化复杂 if 条件。但修改前要确认短路逻辑和空值判断,否则可能改变执行顺序。