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

vor*_*pal 1 python

我原来的python是:

if i.count('<') and i.count('>') == (0 or 1):
    pass
else:
    print('error')
Run Code Online (Sandbox Code Playgroud)

这传递i ='<>'并失败,i ='<>>'这就是我想要的.然而它也失败了i =''我不想要也无法理解.

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

0 == (0 or 1)
Run Code Online (Sandbox Code Playgroud)

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

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

(i.count('<') and i.count('>') == 0) or (i.count('<') and i.count('>') == 1)
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 9

0 or 1始终计算为1(表达式x or y首先计算x;如果x为true,则返回其值;否则,y计算并返回结果值. - 来自布尔运算)

>>> 0 or 1
1
Run Code Online (Sandbox Code Playgroud)

0 == (0 or 1)相当于0 == 1- > False.

要检查x是否0还是1,做到以下几点:

x == 0 or x == 1
Run Code Online (Sandbox Code Playgroud)

要么

x in (0, 1)
Run Code Online (Sandbox Code Playgroud)

  • ``0 <= x <= 1``(python可以做到这一点) (2认同)