我最初的 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)
