我有以下一段代码,它的工作方式与我期望的完全不同......
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语句,因为等式显示为false。为什么会这样?
编辑:我也试过这个!=而不是'不是',并得到了相同的结果。
答案 0 :(得分:6)
使用!=
运算符进行值比较,而不是使用is not
进行值比较,后者会比较对象标识。
除此之外,我认为这是一个缩进问题。
答案 1 :(得分:1)
简而言之,您需要使用==
和!=
,而不是is
。 is
比较对象标识,而不是相等。
答案 2 :(得分:0)
在if中分配current_frame = int(row[0])
,这会改变布尔表达式的值。