为什么 not (a and b) 不等于 not a and not b?
Why isn't not (a and b) the same as not a and not b?
为什么 Not(a and b)
与 Not a and Not b
不同?
while i < len(array) - 1:
if not array[i - 1] < array[i] and not array[i] > array[i + 1]:
i += 1
continue
while i < len(array) - 1:
isPeak = array[i - 1] < array[i] and array[i] > array[i + 1]
if not isPeak:
i += 1
continue
我包含了引发此问题的代码,但为什么 Not(a and b)
与 Not a and Not b
不同?
因为它们在逻辑上不等价。你可以自己用一个真理来解决table:
A
B
not A
not B
not A and not B
F
F
T
T
T
F
T
T
F
F
T
F
F
T
F
T
T
F
F
F
A
B
A and B
not (A and B)
F
F
F
T
F
T
F
T
T
F
F
T
T
T
T
F
如果您查看 De Morgan's laws,可以使用简单的转换;当您将 not
分配到括号中时,您从 and
翻转到 or
(反之亦然),因此 not (A and B)
等同于 not A or not B
;如果你对此做出判断 table,你会发现它们完全匹配。类似地,从 not A and not B
中取出 not
会产生 not (A or B)
,然后,事实 table 再次匹配。
为什么 Not(a and b)
与 Not a and Not b
不同?
while i < len(array) - 1:
if not array[i - 1] < array[i] and not array[i] > array[i + 1]:
i += 1
continue
while i < len(array) - 1:
isPeak = array[i - 1] < array[i] and array[i] > array[i + 1]
if not isPeak:
i += 1
continue
我包含了引发此问题的代码,但为什么 Not(a and b)
与 Not a and Not b
不同?
因为它们在逻辑上不等价。你可以自己用一个真理来解决table:
A | B | not A | not B | not A and not B |
---|---|---|---|---|
F | F | T | T | T |
F | T | T | F | F |
T | F | F | T | F |
T | T | F | F | F |
A | B | A and B | not (A and B) |
---|---|---|---|
F | F | F | T |
F | T | F | T |
T | F | F | T |
T | T | T | F |
如果您查看 De Morgan's laws,可以使用简单的转换;当您将 not
分配到括号中时,您从 and
翻转到 or
(反之亦然),因此 not (A and B)
等同于 not A or not B
;如果你对此做出判断 table,你会发现它们完全匹配。类似地,从 not A and not B
中取出 not
会产生 not (A or B)
,然后,事实 table 再次匹配。