Python:值>当它显然不是时,值返回true

时间:2016-02-01 04:45:58

标签: python python-2.7 error-handling boolean max

我在使用模块时一直出错,所以我去了引发异常的行,这里是:

elif value > max(self._intervals):
    raise Exception("\nERROR: Value Is Greater Than Maximum Element In Points List")
    return

这一切都发生在一个大循环中,所以我想弄清楚哪个迭代变量导致了它。事实证明,14次迭代中有9次导致错误。所以我把代码调整为:

elif value > max(self._intervals):
    print value
    print self._intervals
    print max(self._intervals)
    print value > max(self._intervals)
    raise Exception("\nERROR: Value Is Greater Than Maximum Element In Points List")
    return

我得到这样的东西:

33
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
100
True

所以,值是33,然后我打印列表,然后是代码所做的那个列表的最大值。显然,33不是> 100,所以我测试的最后一行,但它返回它是什么?这怎么可能?我失去了对现实的把握,试图找出原因。它可能是我无法看到的过于明显的东西。

1 个答案:

答案 0 :(得分:6)

您最有可能value成为字符串'33'而非33

例如:

>>> '33' > 100
True

这样做的原因是在比较两个不同类型(int和string)的非数字对象时,通过比较类型的名称来执行比较。因为'int'< 'string',任何int都小于任何字符串。在python3中不再是这种情况。