有谁能解释为什么这两个陈述不相等?
if not(a and not b):
// do some stuff
if (not a and b):
// do some stuff
我试图通过将第一个语句更改为第二个语句来使我的程序更容易理解,但它不起作用。我不完全理解为什么。
答案 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)