2013-03-15 5 views
0

У меня есть это условие в моей программе:условия Basic Python

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

Следующий код, если заявление получает пропускается при Vals [к] == 1, Vals [я] == 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

[править] Russell B orogove был прав, и я сравнивал ints со строками. Почувствуйте себя довольно немым, спасибо за вашу помощь!

+3

Работает для меня. Я думаю, нам нужно больше контекста; что-то может происходить в фоновом режиме, которое вы не осознали. –

+0

Вы уверены, что 'vals [k] == 1, vals [i] == 1, i == 2 и k == 0'? – Igonato

+0

Я удалил несколько отступов кода, поэтому он немного читаем и вставляем изображение. Для справок в будущем изображения не очень полезны для отображения такой информации - так что в следующий раз, пожалуйста, не стесняйтесь копировать и вставлять вывод отладчика в виде блока кода - таким образом - если кто-то хочет его скопировать/вставить и т. Д. .., они могут это сделать. Рад, что вы нашли свой ответ, хотя! –

ответ

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. –

+3

Мое лучшее предположение, что у вас есть сочетание целых чисел и строк в 'vals'. '' 1 '== 1' 'ложь'. –

+0

Вот и все! Благодаря! –