2013-03-15 47 views
0

我在我的節目此條件:基本的Python條件

if vals[k]==vals[i] and i!=k: 

下面的代碼if語句被跳過時瓦爾斯[K] == 1,丘壑[I] == 1,我== 2,當我期望這些值通過條件時,k == 0。我對Python語法的理解有沒有根本性的錯誤?

這是一個任務,所以我不想要在情況下,太多的代碼我得到指責作弊的,但這裏有一個多一點:

for k in range(i-i%4,i+4-i%4): 
    print vals[i] 
    print vals[k] 
    print i 
    print k 
    if vals[k]==vals[i] and i!=k: 
     isMatch = True 
     print 'rowmatch' 
     break 

(忽略打印語句,它們是隻是笨拙輔助調試)

而這裏的返回什麼調試器部分副本:

Sample debugger output

[編輯]羅素乙orogove是對的,我正在比較整個字符串。感覺很蠢,現在感謝您的幫助!

+3

適合我。我認爲我們需要更多的背景;在您未曾意識到的背景中可能會發生一些事情。 – 2013-03-15 23:47:27

+0

你確定關於'vals [k] == 1,vals [i] == 1,i == 2和k == 0'嗎? – Igonato 2013-03-15 23:48:54

+0

我刪除了一些縮進的代碼,因此它更具可讀性並嵌入了圖像。爲了將來的參考,圖像對於顯示這類信息並不那麼有用 - 下次 - 請隨意將調試器輸出複製並粘貼爲代碼塊 - 這樣 - 如果有人想複製/粘貼它等等。 ..,他們可以這樣做。很高興你找到了你的答案! – 2013-03-16 00:33:36

回答

2

if前添加此行,並重新回到我們:

print "vals[k] = %s vals[i] = %s i = %s k = %s"%(vals[k],vals[i],i,k) 

也許你的類型vals不兼容的組合。試試:

for val in vals: 
    print "%s %s"%(val.__class__,val) 
+0

它返回vals [k] = 1 vals [i] = 1 i = 2 k = 0。也許我錯誤地解釋了調試器,但它似乎跳回到for循環的開始。 – 2013-03-15 23:57:49

+3

我最好的猜測是你有'vals'中的整數和字符串的組合。 ''1'== 1'是'False'。 – 2013-03-16 00:07:15

+0

就是這樣!謝謝! – 2013-03-16 00:11:47