findPattern()Python代码...不正确执行?
问题描述:
我的家庭作业是:“编写一个名为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。
- 谢谢!
答
您的变量名拼写错误:linecount
与lineCount
,lettern
与letter
。 Python并不总是警告这种类型的错误。如果这只是复制错误,则line(letter)
是错误:索引由[]
给出。你寻找什么样的模式,单个字符或字符串? line[letter]
只会返回一个字符。
下一次,请张贴不仅代码和是它提供了一个错误,但也什么样的错误。大多数Python错误都会导致抛出异常(例如TypeError
),这可以告诉您(和我们)很多有关错误的信息。
答
你打电话line
作为一个函数,但它是一个字符串。在每一行上使用pattern.find(line)
来查找您的模式。
那么事情是它没有产生任何东西,在输入raw_inputs它只会这样做: >>> 因此,感谢您的及时响应,我其实没有注意到错别字。 – compsciencenub 2010-10-10 21:00:38
此外,我正在寻找一个字符串。不幸的是,我正在通过讨论课的代码,所以我不太确定究竟是什么。 – compsciencenub 2010-10-10 21:02:04
这些是完整的脚本吗?然后,解决方案非常简单:您不需要调用'findPattern'函数,只需定义它即可。 – 2010-10-10 21:06:19