2010-10-10 61 views
0

我的家庭作业是:“编写一个名为findPattern()的函数,它接受两个字符串作为参数,一个文件名和一个模式,函数读入由给定文件名指定的文件,并搜索给定模式的文件内容。然后它返回找到该模式的第一个实例的行的行号和索引,如果找不到匹配,那么对于行号和索引,你的函数应该返回-1。findPattern()Python代码...不正确执行?

我很确定我的代码是准确的,直到它执行第一个命令,然后忽略其余的代码。我尝试了几种不同的写作方式,但所有这三种方式都导致......不能正常工作。

我会后下面的两个相关代码:

代码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会更容易的工作,但它没有产生任何结果。任何输入都将被appriciated。

- 谢谢!

回答

1

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

下一次,请张贴不仅代码和它提供了一个错误,但也什么样的错误。大多数Python错误都会导致抛出异常(例如TypeError),这可以告诉您(和我们)很多有关错误的信息。

+0

那么事情是它没有产生任何东西,在输入raw_inputs它只会这样做: >>> 因此,感谢您的及时响应,我其实没有注意到错别字。 – compsciencenub 2010-10-10 21:00:38

+0

此外,我正在寻找一个字符串。不幸的是,我正在通过讨论课的代码,所以我不太确定究竟是什么。 – compsciencenub 2010-10-10 21:02:04

+1

这些是完整的脚本吗?然后,解决方案非常简单:您不需要调用'findPattern'函数,只需定义它即可。 – 2010-10-10 21:06:19

0

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