2016-11-18 56 views
-1

我在这里做错了什么? 上午试图保持一个行/数组的列/字段中的值小于该行中所有其他字段的数量。Python的和如果循环计数

所以我想通过每一行遍历检查一个特定的列少于列的其余部分。

下面的代码总是导致一个。所以我非常困惑。我试试的一切导致1.

def is_dog_correct(row, x, y, z, r): 
    zero = 0 
    for i in xrange(len(row)): 
     if row[i-1][x] < row[i-1][y] and row[i-1][z] and row[i-1][r]: 
      return Zero + 1 
     else: 
      return 0 

此外,是否有一个更简单的方法来做到这一点。现在用graphlab.SFrame

+1

可能的重复数据删除:http://stackoverflow.com/questions/15112125/how-do-i-test-one-variable-against-multiple-values – mgilson

+1

凡'Zero'定义?你有'零'定义,但不是'零'。 – Makoto

+1

'return'会立即退出你的函数,所以循环只能运行一次迭代。 –

回答

0

你需要保持计数和循环完成后,返回结果。

def is_dog_correct(row, x, y, z, r): 
    count = 0 
    for i in xrange(len(row)): 
     if row[i-1][x] < row[i-1][y] and row[i-1][z] and row[i-1][r]: 
      count = count + 1 
     else: 
      pass 
    return count 
+0

为什么只在'传递'的时候写'else'部分呢? –

+0

然而,对于初学者来说,这并不是必要的,我认为将它留在那里更为明显。这也是为什么我没有使用count + = 1 –

+0

不,使用'pass'并不清楚。特别不适合初学者。如果你这样做,你不是一个好导师,因为你在第一个地方教他错误的做法。使用'count + = 1'也很好。如果OP不知道,他会知道一些新的东西。另外,SO不只是一个用户。您的答案将成为未来查看此问题的其他用户的参考。所以,它也应该考虑到这一点:) –