主要涉及到三个运算符:
and、or 以及 not
print(1 and 2)
print(0 and 1)
print(0 or 1)
print(0 or 0.0)
print(not 1)
print(not 0)
输出结果:
and、or 的运算遵循短路逻辑:从左到右,只有当第一个 *** 作数的值无法确定逻辑运算的结果时,才对第二个 *** 作数进行求值。
所以按照上述,1 and 2 = 2 的原因是因为 and 要求 两边的值 都为 true 时才为 true,1 为 true 但是 1 无法确定逻辑运算的结果,所以当发现第二个 *** 作数 2 也为 true 时输出。
同理,0 and 1 = 0 的原因则是因为第一个 *** 作数已经为 False,已经得到逻辑运算的结果,所以无需判断第二个 *** 作数而直接输出。
而 0 or 1 = 1 与 1 or 0 = 1 的区别在于 0 or 1 在判断第一个 *** 作数时无法得到答案,而 1 or 0 则在判断第一个 *** 作数时已经得到答案。
思考:(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9) = ?
print((not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9))
(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
= False or 0 or 4 or 6 or 9
= 0 or 4 or 6 or 9
= 4
and、or 与 not 的优先级是:or < and < not
思考:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9 = ?
print(not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9)
打印结果:
运算步骤:
not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
= False or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
= False or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
= False or 0 or 4 or 6 or 9
= 0 or 4 or 6 or 9
= 4
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)