我原来的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)
答案 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)
评估为1
,0 == 1
评估为False