2

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

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


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

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

4

3 回答 3

7

您应该查看 De Morgan 的 Thereom,其中一半是(a)

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

就如何适用于您的情况而言,只需替换pa和:qnot(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)
于 2013-05-15T01:42:59.840 回答
1

if not(a and not b)是一样的if (not a) or b,不是你写的。

于 2013-05-15T01:41:42.560 回答
1

由于德摩根定律,您还需要将“和”翻转为“或”

if not(a and not b)

变成

if (not a or b)
于 2013-05-15T01:42:31.800 回答