2012-04-23 190 views
0

我有以下代碼是假設搜索字符'e'在一個字符串中,返回False如果'e'被發現在字符串內並返回True是'e'未找到:搜索功能沒有真正搜索

def has_no_e(word): 
    for letter in word: 
     if letter == 'e': 
      return False 
     return True 

按我的理解,for循環將通過一個訪問中word一個字符,並檢查他們對我設置的條件,這是if letter == 'e'

每次我運行程序,看來for循環只是檢查第一個字母 因爲某些原因!

所以調用函數has_no_e('dde','e')將導致返回True。但是,如果我周圍has_no_e('edd','e')切換它,它會返回False

我在x86的Windows 7旗艦機中運行的Python 2.7.3 ...謝謝

回答

3
return True 

是在身體內部的循環,使它將在檢查第一個字母是否爲'e'後立即執行(除非第一個字母是e那麼它將返回False)。

+0

謝謝隊友!這是有幫助的 – tamiromara 2012-04-23 11:10:33

+0

沒關係,但看到@DanielRoseman的答案最好不要重新發明輪子:D – jamylak 2012-04-23 11:11:26

3

您的return顯示錯誤。 unindent它(與for相同的級別),它會工作

+0

謝謝。縮進返回是答案!令人驚訝的是,在學習的時候,一個人可以如此愚蠢:P – tamiromara 2012-04-23 11:08:16

7

其他人指出你的錯誤,但整個功能過於複雜。你可以這樣做:

def has_no_e(word): 
    return 'e' not in word 
+0

niiiice。我需要一些時間來開發這種編程思路。一般來說,我仍然對python和編程非常陌生。再次感謝。 – tamiromara 2012-04-23 11:22:30