Python整数比较中出现很尴尬的(看似简单)错误
我有一段代码,它的运行结果跟我预期的完全不一样……
current_frame = 15 # just for showcasing purposes
g_ch = 7
if (current_frame != int(row[0])) and (int(row[1]) != g_ch):
current_frame = int(row[0])
print "curious================================="
print current_frame
print row
print current_frame, " != ", int(row[0]), ", ", current_frame != int(row[0])
print "========================================"
对于任何特定的情况,它打印出的结果是:
curious=================================
15
['15', '1', 'more data'] 15 != 15 , False
========================================
显然,这里根本不应该进入这个if语句,因为它显示的相等性是假的。为什么会这样呢?
补充:我也试过用 != 代替 'is not',结果还是一样。
3 个回答
0
你在条件判断的里面写了 current_frame = int(row[0])
,这会改变布尔表达式的值。
1
简单来说,你需要使用 ==
和 !=
,而不是 is
。因为 is
是用来比较对象的身份的,而不是比较它们是否相等。
6
值的比较是用 !=
这个符号来做的,而不是用 is not
,后者是用来比较对象是否是同一个东西。
除此之外,我觉得可能是缩进的问题。