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')将导致 return True。但如果我切换has_no_e('edd','e')它会返回False

我在 x86 Windows 7 Ultimate 机器上运行 Python 2.7.3...谢谢

4

3 回答 3

7

其他人指出了您的错误,但整个功能过于复杂。你可以这样做:

def has_no_e(word):
    return 'e' not in word
于 2012-04-23T10:58:17.673 回答
3
return True

位于 for 循环的主体内,因此它将在检查第一个字母是否为之后立即执行'e'(除非第一个字母为,e否则它将返回False)。

于 2012-04-23T10:46:06.757 回答
3

return的缩进错误。取消缩进(到与 相同的级别for),它会工作

于 2012-04-23T10:46:52.493 回答