首页 > 解决方案 > python中的布尔值

问题描述

a=True and 1/0
print(a)

上述代码片段的输出显示错误。

而以下代码片段的输出:

a=False and 1/0
print(a)

是假的

为什么呢?从外行的角度来看,由于 1/0 是未定义的,因此每种情况下都应显示错误。

同样,如果我取 a = True 或 1/0,则输出为真,而错误为 False 或 1/0

我尝试了不同的版本:

a=1/0 or False
print(a)

或者

a=1/0 or True
print(a)

两者都显示错误(除以零)

我意识到这与我输入它们的顺序和我使用的布尔运算符有关。

无论如何,为什么我会得到输出,在某些情况下?

标签: python

解决方案


两者都是短路and的,即如果第一个输入分别为假或真,则根本不评估其余输入。这就是为什么两者都可以返回结果,而其他变体则不能。orFalse and 1/0True or 1/0


推荐阅读