2013-03-15 56 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