Skip to main content
 首页 » 编程设计

python之为什么 0 == (0 or 1) 不返回 True

2025年05月04日14sky-heaven

我最初的 python 是:

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

这通过了 i = '<>' 而失败了 i = '<>>' 这正是我想要的。但是它也因 i = '' 而失败,我不想要也无法理解。

在 ipython3 中,我已经摆弄了足够长的时间来归结为抽象的

0 == (0 or 1) 

奇怪地返回 False。我猜它与 0=False 1=True 有关,但即使在谷歌搜索后,它对我来说仍然不太有意义。

我真的必须将我的原始代码重写得更长并且在我看来更丑陋吗:

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

请您参考如下方法:

0 or 1 总是计算为 1(表达式 x or y 首先计算 x;如果x 为真,则返回其值;否则,计算 y 并返回结果值。-- 来自 Boolean operations )

>>> 0 or 1 
1 

0 == (0 or 1) 等同于 0 == 1 -> False。

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

x == 0 or x == 1 

或

x in (0, 1)