如何从头开始实现find()函数(无库)

时间:2019-02-11 23:55:13

标签: python

问题是我们要编写一个基本上执行find()函数但也处理通配符的函数。由于它是实验室/作业,因此通过Mimir评分时,不允许使用任何库(例如re)。

我采用的方法(也建议使用TA)是在没有通配符的情况下使函数正常工作。到目前为止,这是我尝试过的:

dependencies {

  compile project(':projecta')

  testCompile project(path: ':projecta', configuration: 'tests')

}

我得到的错误是:UnboundLocalError:赋值之前引用了局部变量'j'。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

该错误是一个很好的指示。如果文本与第一个字母不匹配,则无需定义j,而是在下一行使用它。我怀疑您降低了缩进程度:

def findMatch(self, text, start=0):
    i = 0
    while i < len(text):
        if text[i] == self._pattern[0]:
            j = 0
            while j < len(self._pattern):   # Notice this line is indented
                if text[i + j] == self._pattern[j]:
                    j += 1
                else:
                    break

我还应该注意,如果完整单词匹配,您当前不做任何事情。如果整个模式都匹配,则您可能希望返回位置i(或类似的想法)。