python比较,出问题了

标签 python python-2.7

我正在像下面这样在空闲状态下进行测试,但是出了点问题..

>>> print 1<>1
False    OK
>>> print  1<>0
True     OK
>>> print False | True
True     OK
>>> print False | 1<>0
True     OK
>>> print 1<>1 | 1<>0
False   WHY ???

最佳答案

您正在使用 | 按位或 运算符。您可能正在寻找 or运算符代替。 or bool OR 运算符。

请注意 <>已弃用,您想使用 !=真的。

>>> 1 != 1
False
>>> 1 != 0
True
>>> False or True
True
>>> False or 1 != 0
True
>>> 1 != 1 or 1 != 0
True

在 Python 中,bool() type 是 int() 的子类, 与 True等于 1 和 False等于 0,因此在 True 上使用按位运算符和 False具有相同的输出,就好像这些值是整数一样:

>>> True == 1
True
>>> 10 | True
11

但是因为|!= 有一个更高的先例(或 <> )它首先被执行:

>>> 1 != (1 | 1) != 0
False
>>> (1 != 1) | (1 != 0)
True

or 短路,它返回第一个 bool 值 true-ish 的表达式值(对于集合非空,对于数值非零)。

关于python比较,出问题了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510046/

相关文章:

python - 在 Maya python 中将重复列表 "L"重命名为 "R"

python - 如何让 Pool.map 采用 lambda 函数

python - 来自列表列表的字典理解python

python - 如何将Django的评论表单默认标签名称更改为中文?

python - 如何从元组列表中找到频率最高的 3 个元素?

python - 如何通过添加到列表列表中使所有列表的长度相同

python - 如何产生指数比例轴?

python - 如何在Windows中获取物理驱动器

Python .split 索引错误

python - 使用 ebay 列出 FixedPriceItem 的示例代码