如果不是(a而不是b)和if(不是a和b)

时间:2013-05-15 01:39:08

标签: logic

有谁能解释为什么这两个陈述不相等?

if not(a and not b): 
// do some stuff


if (not a and b):
// do some stuff

我试图通过将第一个语句更改为第二个语句来使我的程序更容易理解,但它不起作用。我不完全理解为什么。

3 个答案:

答案 0 :(得分:6)

你应该看看De Morgan的“其中”,其中一半是(a)

not(p and q) -> not(p) or not(q)

就如何适用于您的情况而言,只需将p替换为a,将q替换为not(b)

not(a and not b) -> not(a) or not(not(b))
                 -> not(a) or b

(a)另一半是:

not(p or q) -> not(p) and not(q)

答案 1 :(得分:1)

if not(a and not b)if (not a) or b相同,而不是您所写的内容。

答案 2 :(得分:1)

您还需要将'和'翻转为'或',因为De Morgan's law

if not(a and not b)

变为

if (not a or b)