【问题标题】:Why does my substring check return false? [duplicate]为什么我的子字符串检查返回 false? [复制]
【发布时间】:2020-04-24 18:40:48
【问题描述】:
def is_substring(substring,string):

    for count in range(len(string)):

        if (string[count:count + len(substring)]) == substring:

            return True

        else:

            return False

print(is_substring('dab', 'abracadabra'))

如果我尝试只打印这样的条件值:

def is_substring(substring,string):

    for count in range(len(string)):

        print (string[count:count + len(substring)]) == substring)

print(is_substring('dab', 'abracadabra'))

我得到这个输出:

python substrings.py

abr

胸罩

拉克

阿卡

cad

阿达

轻拍

abr

胸罩

一个

它打印 dab 词,它等于子字符串,但是当我尝试使用 if 条件使其等于子字符串时,它返回 false。为什么返回 false?

【问题讨论】:

  • 请更新您的问题以包含minimal reproducible example 和更清晰的说明您正在尝试做什么。一方面,这是 Python,所以缩进很重要......
  • 在互联网上的任何地方提问时,(a) 尽量避免“阻止我”和“我是初学者”以及悲惨和痛苦的陈述。 (b) 清楚你的问题是什么。撰写有用且内容丰富的标题。 (c) 格式化您的代码 - 大多数问答网站都提供格式化工具。 (d) 使用正确的英文大小写,并通过拼写检查器检查您的写作。 Stack Overflow 不是聊天室 - 我们希望永远保留问题,以帮助其他开发人员。
  • edit 你的问题成为主题:包括一个重复问题的minimal reproducible example。寻求调试帮助的问题(“为什么这段代码没有按我想要的方式工作?”)必须包括:(1)期望的行为,(2)特定的问题或错误以及(3)重现它所需的最短代码在问题本身中。另请参阅:What topics can I ask about here?How to Ask
  • @halfer 并不是说​​聊天室也会乐于看到蹩脚的英语!
  • @JohnDvorak:我不确定——你读过 Facebook 聊天室吗?他们对那里的语言和语法做了什么……太可怕了。 :=)

标签: python python-3.x


【解决方案1】:

您的 else 在第一次比较后返回。应该这样编码:

def is_substring(substring, string):

    for count in range(len(string)):

        if (string[count:count + len(substring)]) == substring:
            return True

    return False

print(is_substring('dab', 'abracadabra'))

【讨论】:

    猜你喜欢
    • 2016-01-30
    • 2017-12-14
    • 1970-01-01
    • 2013-10-17
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2010-11-10
    相关资源
    最近更新 更多