【问题标题】:Integer comparison in PythonPython中的整数比较
【发布时间】:2013-07-16 02:28:00
【问题描述】:

我遇到了一些奇怪的事情。我对 Python 有点陌生,如果这是基础知识,我很抱歉。

a = 12
b = int(24/3)
x = (a < b)

从调试器: 我有:

a (int) = 12
b (int) = 8
x (bool) = True

所以在这种情况下似乎是 8 > 12,我在这里一无所知,有什么解释吗?

PS: x = a

编辑 我正在使用 squish(自动测试),这似乎是问题所在,因为我要求一些同事在 squish 中测试相同的片段,结果也是如此。

【问题讨论】:

  • 我收到x = False 获取您的代码。您的调试器似乎把事情搞砸了
  • 我也得到 x = False。
  • 这不仅是我的调试器,如果 x 是 if 条件,它也会通过......(顺便说一句,这就是问题)
  • 可能会显示更多您的代码,错误似乎在其他地方

标签: python integer comparator squish


【解决方案1】:

有些东西根本上是错误的,可能在您的调试器或代码的另一部分。 Python 在基本算术方面相当没有错误。

>>> a = 12
>>> b = 24/3
>>> a < b
False

【讨论】:

    【解决方案2】:

    代码运行良好。没有错误。正如其他人所建议的那样,您的调试器有问题。我建议编辑问题以包含有关您正在使用的环境的详细信息,以便我们可以复制该问题。

    【讨论】:

      【解决方案3】:

      这是一个well-known behaviour,虽然不完全直观,是 Squish 的行为。您的int 调用不使用Python int 函数,而是调用int 构造函数来构造一个整数,该整数可以传递给被测应用程序中的方法(setWidth 左右)。 IE。 Squish 覆盖了int 的含义。

      你可以使用

      import __builtin__
      a = 12
      b = __builtin__.int(24/3)
      x = (a < b)
      

      强制获取 Python int

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-11
        • 2015-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多