在Python中用'/'表示大于和小于?

5 投票
2 回答
503 浏览
提问于 2025-04-18 17:09

我最近开始玩代码高尔夫,想尽量减少代码的字符数。

我记得有人说过可以用 if a/b: 来代替 if a<=b:。不过,我查了查Python的文档,没有找到相关的内容。

我可能记错了,但我很确定我在多个地方见过这个操作符被使用和推荐。

这个操作符真的存在吗?如果存在的话,它是怎么工作的呢?

2 个回答

6

这其实就是简单的除法。对于整数来说,如果 a >= 0(a大于等于0)并且 b > 0(b大于0),那么当 a 大于等于 b 时,a/b 的结果是“真”的。因为在这种情况下,a/b 是一个严格的正整数,而对一个非零整数使用 bool() 函数的结果是 True

至于零和负整数的情况,我相信你可以自己算出 a/b 的真假。

5
>>> 5/6
0
>>> bool(5/6)
False

>>> 6/5
1
>>> bool(6/5)
True

这是因为在Python 2.7中,/这个符号会进行整数除法,然后把结果转换成布尔值(真或假)。

如果你使用了from __future__ import division,那么这个情况就不一样了,因为此时/会进行浮点数除法,而不是整数除法。

所以对于x < y的情况,结果仍然会大于0,并且依然会被判断为真(True)。

>>> from __future__ import division

>>> 5/6
0.8333333333333334
>>> bool(5/6)
True

>>> 6/5
1.2
>>> bool(6/5)
True

撰写回答