2016-11-18 57 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不只是一個用戶。您的答案將成爲未來查看此問題的其他用戶的參考。所以,它也應該考慮到這一點:) –