理解Python中的逻辑(《笨办法学Python》第27题)
有人能给我解释一下《笨办法学 Python》第27题吗?
这里有一张图片,显示了我不理解的部分。

这是不是在说,如果假设表格的左边那一列是真的,那么答案也是真的?
比如说,如果 x = y 不是假的,那 x = y 是真的?是的。
但是……如果 x = y 是假的和真的,那 x = y 是真的?不是吗??
9 个回答
我觉得“True?”这个标题有点让人误解。它应该改成“值”或者“结果”之类的。简单来说,True or False
的值(或者结果)是 True
(在第二个表格里),就像 3 + 5
的值(或者结果)是 8
一样。这就像数学运算,没什么特别的。
这就是一个真值表:这里提到的操作(or
、and
、==
)都可以看作是只针对True
(真)和False
(假)这两个值进行的。在这种情况下,要完全描述一个操作符,你只需要列出所有可能的输入。
比如,操作符or
的定义是:
(True or True) is True
(True or False) is True
(False or True) is True
(False or False) is False
这就完全解释了or
对布尔值的作用。
如果你感兴趣的话,那篇维基百科的页面实际上列出了所有可能的布尔二元操作符:
0. Opq, false, Contradiction
1. Xpq, NOR, Logical NOR
2. Mpq, Converse nonimplication
3. Fpq, ¬p, Negation
4. Lpq, Material nonimplication
5. Gpq, ¬q, Negation
6. Jpq, XOR, Exclusive disjunction
7. Dpq, NAND, Logical NAND
8. Kpq, AND, Logical conjunction
9. Epq, XNOR, If and only if, Logical biconditional
10. Hpq, q, Projection function
11. Cpq, if/then, Logical implication
12. Ipq, p, Projection function
13. Bpq, then/if, Converse implication
14. Apq, OR, Logical disjunction
15. Vpq, true, Tautology
对于每个表格,如果你在左边的列输入一个表达式,右边的列会给出对应的结果;表格的标题显示了正在解释的运算符。例如,如果你输入“not True”,结果会是 False。
编辑:
哎呀,其实很简单。比如说,AND 运算符的表格:
If a is True and b is True, then a AND b is True
If a is True and b is False, then a AND b is False
If a is False and b is True, then a AND b is False
If a is False and b is False, then a AND b is False
这个表格就是在告诉你 AND 运算符是怎么工作的。它需要两个真或假的值,然后根据这两个值的组合来返回结果。表格列出了所有可能的输入组合和每种组合的结果,完全描述了这个运算符能做的事情。这就是它想表达的全部内容。
其他运算符也是类似的:
NOT is "the opposite of": if a is False, then Not a is True
AND is true if "both of" a and b are true
OR is true if "at least one of" a or b is true
== is "equal to", true if a and b have the same value
!= is "not equal to", true if a and b have different values
等等。
编辑2:
如果把这些运算符想象成电路,可能会更容易理解(实际上,这个比喻正好说明了你的电脑是怎么构建的!)。
AND 就像一个串联电路——电流通过一根线,先到开关 A,再到开关 B,最后到灯泡。灯泡只有在开关 A 和开关 B 都打开的时候才会亮。
OR 就像一个并联电路——电流可以同时通过开关 A 和开关 B 到灯泡。如果任意一个开关打开(或者两个都打开),灯泡就会亮。
== 就像一对双向开关——灯泡只有在两个开关都向上或者都向下的时候才会亮。
这样解释有帮助吗?