Python中的整数比较

时间:2013-07-17 13:43:06

标签: python integer comparator squish

我遇到了一些奇怪的事情。我对Python很新,如果这是基础知识,那就很抱歉。

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

从调试器: 我有:

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

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

PS:x = a&lt; b做同样的事(没有括号)

修改 我正在使用挤压(自动测试),这似乎是问题,因为我要求一些同事在挤压中测试相同的snipet并且它也是如此。

3 个答案:

答案 0 :(得分:3)

某些东西根本就是错误的,可能在您的调试器或代码的其他部分。 Python基本算法没有合理的无错误。

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

答案 1 :(得分:1)

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

您可以使用

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

强制获取Python int

答案 2 :(得分:0)

代码工作得很好。没有错误。正如其他人所说,调试器出了问题。我建议编辑问题以包含有关您正在使用的环境的详细信息,以便我们可以复制该问题。