【问题标题】:Using '/' as greater than less than in Python?在 Python 中使用“/”大于小于?
【发布时间】:2014-08-13 14:20:44
【问题描述】:

我最近开始玩代码高尔夫,需要尽可能多地保存字符。

我记得看到有人说要使用 if a/b: 而不是 if a<=b:。但是,我查看了 Python 文档,并没有看到任何类似的内容。

我可能记错了,但我很确定我已经看到这个运算符在多个实例中使用和推荐。

这个运算符存在吗?如果是这样,它是如何工作的?

【问题讨论】:

  • 那不是代码高尔夫,那是混淆。对于打高尔夫球if b>a: 效果更好。
  • 这是一种保存字符的混淆,这使得它与打高尔夫球有关。
  • a/b通常有效,但a>b总是有效(即使对于非整数 - 更不用说它更清晰了) ,所以我推荐后者。

标签: python python-2.7 comparison operators


【解决方案1】:

这只是划分。而且,至少对于整数a >= 0b > 0,如果a>=ba/b 是真实的。因为在这种情况下,a/b 是一个严格的正整数,而应用于非零整数的bool()True

对于零和负整数参数,我相信您可以自己计算出a/b 的真实性。

【讨论】:

  • 不仅是正数ab,还包括整数ab
  • 对于正整数。对于带有a < b 的浮点数,结果将是 0 点,这不是零,因此是正确的。
  • 如果我们使用整数 a / b 对于 Python 3 中不是 0 的每个 a 都是真实的。
【解决方案2】:
>>> 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

【讨论】:

  • from __future__ import division 本身不控制舍入。它在对整数进行操作时控制/ 的含义。整数除法或浮点除法。
  • 在 python 3 中,您可以使用 a//b,但与 a 相比,它不会保存任何字符
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
相关资源
最近更新 更多