我在使用模块时一直出错,所以我去了引发异常的行,这里是:
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,所以我测试的最后一行,但它返回它是什么?这怎么可能?我失去了对现实的把握,试图找出原因。它可能是我无法看到的过于明显的东西。
答案 0 :(得分:6)
您最有可能value
成为字符串'33'
而非33
。
例如:
>>> '33' > 100
True
这样做的原因是在比较两个不同类型(int和string)的非数字对象时,通过比较类型的名称来执行比较。因为'int'< 'string',任何int都小于任何字符串。在python3中不再是这种情况。