1

我遇到了一些奇怪的事情。我对 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 也一样(不带括号)

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

4

3 回答 3

3

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

>>> a = 12
>>> b = 24/3
>>> a < b
False
于 2013-07-17T13:53:31.217 回答
1

这是 Squish 的一种众所周知的行为,尽管并不完全直观。您的int调用不使用 Pythonint函数,而是调用int构造函数来构造一个整数,该整数可以传递给被测应用程序中的方法(setWidth或左右)。即 Squish 覆盖了int.

您可以使用

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

强制获取 Python int

于 2014-11-26T22:22:20.253 回答
0

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

于 2013-07-17T16:45:17.730 回答