我正在做“以艰难的方式学习python”这本书。在练习27(http://learnpythonthehardway.org/book/ex27.html),它以布尔代数开始。
所以我的问题是:
为什么not(True and False)
是真的?
我是如何理解的,它应该与False and True
相同。
答案 0 :(得分:10)
您的解释不正确,请参阅De Morgan's laws;特别是否定一个连词是否定的否定。
not (True and False)
(对连词的否定 == not(a and b)
)相当于False or True
(否定的分离 == (not a) or (not b)
);请注意从and
切换到or
!
您还可以执行以下步骤:
not(True and False)
True and False
- > False
not(False)
- > True
。答案 1 :(得分:8)
not (True and False)
首先简化为not (False)
,然后进一步简化为True
。
答案 2 :(得分:0)
你应该看看De Morgan's laws,其中指出(非正式地):
“不(A和B)”与“(不是A)或(不是B)”
相同另外,“not(A或B)”与“(不是A)和(不是B)”相同。
因此,在您的情况下,not(True and False)
与not(True) or not(False)
相同,False or True
与True
答案 3 :(得分:0)
让我们一步一步地做到这一点:
(True and False)
评估为(False)
not (False)
评估为True
足够简单:)
答案 4 :(得分:0)
按照操作顺序,首先解决括号内的内容,用变量以这种方式查看:
a == True and False == False
not(True and False) == not(a) == not(False) == True
你在想的是:
not(True) and not(False)
这确实是假的,因为:
a == not(True) == False
b == not(False) == True
not(True) and not(False) == a and b == False and True == False