2013-07-17 58 views
1

我遇到了奇怪的事情。如果这是基础知识,我对Python很有新意,所以很抱歉。在Python中的整数比较

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

从调试器: 我:

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

如此看来,在这种情况下,8> 12,我在这里一无所知,任何解释?

PS:X = A < B做出同样的(不带括号)

编辑 我用挤(自动测试),似乎这是个问题,我问了一些同事测试同样的snipet在压扁,它也做了同样的事情。

+3

我为你的代码得到'x = False'。你的调试器似乎搞砸了 – ala

+0

我也得到x = False。 – svineet

+1

http://pastebin.com/iVM0gW2W – dusty

回答

1

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

您可以使用

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

执行得到了Python int

3

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

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

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