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

9-b*_*its 0 logic

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

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


if (not a and b):
// do some stuff
Run Code Online (Sandbox Code Playgroud)

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

pax*_*blo 6

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

not(p and q) -> not(p) or not(q)
Run Code Online (Sandbox Code Playgroud)

在如何适用于您的情况而言,只需更换paqnot(b):

not(a and not b) -> not(a) or not(not(b))
                 -> not(a) or b
Run Code Online (Sandbox Code Playgroud)

(a)另一半是:

not(p or q) -> not(p) and not(q)
Run Code Online (Sandbox Code Playgroud)