【问题标题】:Can't print the stringMatching pattern无法打印字符串匹配模式
【发布时间】:2020-03-02 04:30:28
【问题描述】:

当我运行此代码时,我没有收到任何错误,但我无法在下面打印出我的代码。

我尝试改变条件位置改变但没有奏效。我的错误在哪里以及如何解决?

def stringMatching(text, pattern):
  for i in range (len(text) - len(pattern)):
  j = 0
  while j < len(pattern) & pattern[j] == text[i+j]:
    j = j + 1
  if j == len(pattern):
    return -1
string = "Chapter I. The quick brown fox jumped over the lazy dog."
substr = "over the"
print(stringMatching([string],[substr])) 

【问题讨论】:

  • 如果满足j==len(pattern),您的函数可能返回值是-1,或者None。您可能想返回一些东西以便您可以打印它。您还需要修复上面代码中的缩进,因为这显然是不正确的。

标签: python algorithm string-matching


【解决方案1】:

假设您正在寻找子字符串,您可以使用 find() 方法,如下所示:

print(string.find(substr))

如果结果 > -1,它是一个子字符串。如果您只想要一个 return 0/ -1 ,您也可以创建一个函数,如下所示:

string = "Chapter I. The quick brown fox jumped over the lazy dog."
substr = "over the"
substr2 = "lazy hat"

def checkSubstring(string, substring):
    if string.find(substring) > -1:
        print("Within the Text")
        return 0
    else:
        print("Not within the Text")
        return -1

checkSubstring(string, substr)
checkSubstring(string, substr2)

分别返回 0 和 -1

【讨论】:

  • 哦,非常感谢,代码运行正常,如果我们尝试只在 1 个函数中运行呢?我们不能在没有第二个功能的情况下对第一部分进行一些编辑吗?
  • 你到底是什么意思?如果你的意思是我们可以只使用 string.find() 方法,那么你只需要使用小于 0 意味着第二个字符串不是子字符串的逻辑
  • 我的意思是如果没有 checkSubstring 函数,我们可以只将这些操作包含到 stringMatching 函数中吗?顺便说一句,您的代码很好,我很欣赏良好的编程。
  • 我想我对你的意思还是有点困惑。你能更明确地解释一下吗
  • 当然,我的意思是如果不创建一个新函数来打印输出中发生的事情,我们是否可以在我上面写的 stringMatching 函数中添加一些代码,而不添加一个新函数,例如正如您在上面所写的 checkSubstring?我正在尝试制作一个带有输出的函数(不是无)。
猜你喜欢
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
相关资源
最近更新 更多