2012-04-23 122 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