【问题标题】:Search function not really searching搜索功能不是真正的搜索
【发布时间】:2012-04-23 10:44:26
【问题描述】:

我有以下代码,假设在字符串中搜索字母“e”,如果在字符串中找到“e”,则返回False,如果未找到“e”,则返回True

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 Ultimate 机器上运行 Python 2.7.3...谢谢

【问题讨论】:

    标签: python for-loop python-2.7


    【解决方案1】:

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

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

    【讨论】:

    • niiiice。我需要一些时间来培养这种编程心态。总的来说,我对 python 和编程还是很陌生。再次感谢。
    【解决方案2】:
    return True
    

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

    【讨论】:

    • 没关系,但请参阅@DanielRoseman 的答案最好不要重新发明轮子:D
    【解决方案3】:

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

    【讨论】:

    • 谢谢。缩进返回就是答案!令人惊讶的是,一个人在学习时会变得多么愚蠢:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 2020-03-02
    • 2013-04-29
    • 2019-04-21
    相关资源
    最近更新 更多