【发布时间】:2021-04-17 18:05:52
【问题描述】:
我写了一个代码
print(False>True)
print(True>False)
结果是
False
True
谁能解释一下这是怎么回事
【问题讨论】:
-
print(int(True))-print(int(False))
标签: python boolean boolean-logic boolean-operations
我写了一个代码
print(False>True)
print(True>False)
结果是
False
True
谁能解释一下这是怎么回事
【问题讨论】:
print(int(True)) - print(int(False))
标签: python boolean boolean-logic boolean-operations
在 Python 中,当您在大于/小于比较中使用布尔值时,它们会自动被视为数字,因此 True 变为 1 并且 False 变为 0。替换它们,答案就很明显了:
print(0 > 1)
print(1 > 0)
第一次检查是False,第二次检查是True。
【讨论】:
布尔值也是整数并且具有整数值:
>>> type(False)
<class 'bool'>
>>> bool.mro() # base classes include integer
[<class 'bool'>, <class 'int'>, <class 'object'>]
>>> int(False)
0
>>> int(True)
1
所以 False(0) 不 大于 True(1),而 True(1) is 大于 False(0)。
【讨论】:
您基本上是在打印 0 (False) 是否大于 1 (True),即 False,然后对于第二个语句反之亦然
【讨论】:
布尔结果总是返回 0 或 False 表示 false,1 或 True 表示 true
发件人:Py Doc
为了更清楚:
>>> False
False
>>> False>True
False
>>> 0>1
False
>>> True>False
True
>>> 1>0
True
【讨论】: