为什么不0 ==(0或1)返回True

时间:2013-12-01 13:41:47

标签: python

我原来的python是:

if i.count('<') and i.count('>') == (0 or 1):
    pass
else:
    print('error')

这传递 i ='&lt;&gt;',并且 i ='&lt;&gt;&gt;'失败,这就是我想要的。然而,它也失败了 i ='',我不想要也无法理解。

在ipython3中,我已经摆弄了这么长时间才能归结为抽象的

0 == (0 or 1)

奇怪地返回False。我猜这与0 =假1 =真有关,但即使经过相当多的谷歌后,它对我来说仍然没有意义。

我是否真的需要将原始代码重写为更长时间,而且我的想法更加丑陋:

(i.count('<') and i.count('>') == 0) or (i.count('<') and i.count('>') == 1)

2 个答案:

答案 0 :(得分:9)

0 or 1始终评估为1(表达式x or y首先评估x;如果x为真,则返回其值;否则,{评估{1}}并返回结果值。 - 来自Boolean operations

y

>>> 0 or 1 1 相当于0 == (0 or 1) - &gt; 0 == 1

要检查x是False还是0,请执行以下操作:

1

x == 0 or x == 1

答案 1 :(得分:2)

(0 or 1)评估为10 == 1评估为False