2010-07-19 16 views
0

我有以下的一段未工作,我希望它在一路碼...好不尷尬(貌似簡單)錯誤使用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語句,因爲等號顯示爲false。這是爲什麼發生?

編輯:我也試過這個!=而不是'不是',並得到了相同的結果。

+2

值得平等不應與身份混淆。 – recursive 2010-07-19 13:45:18

+2

既然你說這發生在'!='和'不是'一樣,請省略'current_frame = int(row [0])並顯示'print repr(current_frame)'和'print repr(row [0] )' – unutbu 2010-07-19 13:49:54

+0

很好的趕上unutbu。謝謝 – ahhtwer 2010-07-19 13:56:07

回答

5

!=運算符進行值比較,而不是與is not比較對象身份。

除此之外,我認爲這是一個縮進問題。

+0

應該提到我也是這樣做的,得到了​​同樣的結果。 – ahhtwer 2010-07-19 13:45:08

1

總之,您需要使用==!=,而不是isis比較對象的身份,而不是相等。

0

您在if中分配了current_frame = int(row[0]),它更改了布爾表達式的值。