findPattern () Python Code ... не выполняется правильно? - PullRequest
0 голосов
/ 11 октября 2010

мое домашнее задание заключалось в следующем: «написать функцию 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, скорее всего, сработает, но он не даст никаких результатов. Любой вклад будет оценен.

-Спасибо!

Ответы [ 2 ]

1 голос
/ 11 октября 2010

Ваши имена переменных написаны с ошибками: linecount против lineCount, lettern против letter.Python не всегда предупреждает об этом типе ошибки.Если это просто ошибка копирования, то line(letter) - это ошибка: индекс задается как [].Какой тип шаблона вы ищете, отдельный символ или строку?line[letter] вернет только один символ.

В следующий раз, пожалуйста, опубликуйте не только код и , что выдает ошибку, но также что за ошибка ,Большинство ошибок Python приводят к возникновению исключений (таких как TypeError), которые могут рассказать вам (и нам) многое о том, что происходит не так.

0 голосов
/ 11 октября 2010

Вы вызываете line как функцию, но это строка.Используйте pattern.find(line) в каждой строке, чтобы найти свой шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...