2010-10-10 96 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)來查找您的模式。