findPattern()Python代码...没有正确执行?

时间:2010-10-10 20:39:54

标签: python design-patterns

我的作业分配是:“编写一个名为findPattern()的函数,它接受两个字符串作为参数,一个文件名和一个模式。该函数读取给定文件名指定的文件,并在文件的内容中搜索给定的模式然后它返回找到此模式的第一个实例的行的行号和索引。如果未找到匹配,则您的函数应为行号和索引返回-1。“

我很确定我的代码是准确的,直到它执行第一个命令然后忽略其余的代码。我尝试了几种不同的写作方式,但这三种方法都产生了...不工作的结果。

我将在下面发布两个相关代码:

代码1:

def findPattern (filename, pattern):
    f=open(filename)

    linecount = 0
    lettercount = 0


    for line in f:
        lineCount +=1
        for letter in range(len(line)):
            if line(letter)==pattern:
                letterCount+=1
                return[lineCount,line]
    return "Did not find " + pattern

代码2:

print
filename = raw_input("Enter a file name: ")
pattern = raw_input("Enter a pattern: ")

def findPattern (filename,pattern):
    f=open(filename)

    lineCount = 0
    letterCount = 0

    for line in f:
        lineCount +=1
        for letter in range(len(line)):
            if line(letter)==pattern:
                letterCount+=1
                print ("Found pattern " + pattern + " at " + str((lineCount, letter)))

我认为代码2更有可能起作用,但它没有产生任何结果。任何输入都会得到满足。

-Thanks!

2 个答案:

答案 0 :(得分:1)

您的变量名称拼写错误:linecountlineCountletternletter。 Python并不总是警告这种类型的错误。如果这只是一个复制错误,那么line(letter)就是错误:索引由[]给出。你在寻找什么样的模式,单个字符或字符串? line[letter]只返回一个字符。

下次,请不仅发布代码和 它会出错,还会出现什么样的错误。大多数Python错误导致抛出异常(例如TypeError),它可以告诉你(和我们)很多关于出错的地方。

答案 1 :(得分:0)

您将line称为函数,但它是一个字符串。在每一行上使用pattern.find(line)来查找您的模式。