По вашим вопросам правильная реализация:
def filesStringSearch(filename, pattern):
with open(filename, 'r') as f:
text = f.read()
if len(pattern) >= 3:
return text.find(pattern) > -1 or False
else:
return -1
filename = 'example.txt'
pattern_to_find = input('Search for a word: ')
out = filesStringSearch(filename, pattern_to_find)
print(out)
Если вас попросят написать функцию, которая принимает два аргумента, то ваша функция должна принять два аргумента, как здесь:
def filesStringSearch(filename, pattern):
Тогда вы должны прочитать файл, я сделал это с помощью оператора with
. with
оператор закроет наш файл для нас, поэтому вам не нужно делать это вручную (и да, вы забыли закрыть открытый файл, это пока не большая проблема, но избегайте таких вещей в больших проектах) , Вы можете прочитать больше об утверждении там: Чтение и запись файлов
Как насчет find
метода. Это строковый метод, который будет возвращать индекс найденной подстроки в вашей строке, например, my_string.find('h')
будет возвращать индекс первой подстроки (то есть 'h') в строке my_string
. Если find
метод не может найти вашу подстроку, он вернет -1, поэтому мы делаем это:
return text.find(pattern) > -1 or False
Как будто мы найдем наш шаблон в тексте, тогда индекс, безусловно, будет больше -1. В противном случае мы возвращаем False
или -1
, если длина строки шаблона меньше 3, в соответствии с вашим вопросом
И в конце мы берем ввод от пользователя и передаем этот ввод нашей функции с именем файла example.txt
. Мы сохраняем возвращаемое значение нашей функции в переменной out
и затем печатаем его