Моя проблема заключается в следующем:
def searchWordlist():
path = str(raw_input(PATH))
word = str(raw_input(WORD))
with open(path) as f:
for line in f:
if word in line:
print "Word found"
Чем я добавил следующий код:
else:
print "Word not found"
Но это, очевидно, не может работать, потому что будет печатать «Слово не найдено», пока слово не будет найдено. Ну .. а как мне распечатать что слово не найдено ?! Я не знаю.
Заранее спасибо!
5 ответов
def searchWordlist():
path = str(raw_input(PATH))
word = str(raw_input(WORD))
loc = -1
with open(path) as f:
for i, line in enumerate(f):
if word in line:
loc = i
break
if loc >= 0:
print ("Word found at line {}".format(loc))
else:
print ("Word not found")
В качестве бонуса, это отслеживает, где в файле слово впервые увидено, если вообще.
У Python есть специальный прием для такого рода вещей:
for line in f:
if word in line:
print "Word found"
break
else:
print "Word not found"
Здесь else
идет вместе с for
и, в частности, выполняется, если цикл завершается нормально, не нажимая break
.
Если все, что вам нужно, это напечатать, найден ли word
в одной из строк:
def searchWordlist():
path = str(raw_input(PATH))
word = str(raw_input(WORD))
with open(path) as f:
if any(word in line for line in f):
print('Word found')
else:
print('Word not found')
def searchWordlist():
found_word = False
path = str(raw_input(PATH))
word = str(raw_input(WORD))
with open(path) as f:
for line in f:
if word in line:
print "Word found"
found_word = True
if not found_word:
print "Word not found!"
Этот код выполняет ваш код как обычно, за исключением того, что, если он находит слово, он устанавливает логическое значение в true, означающее, что он нашел слово. Затем, после полного анализа файла, он видит, было ли найдено слово, если переменная равна true. Если слово не было найдено, то печатается, что слово не было найдено. Если вы хотите, чтобы код останавливался после того, как слово было найдено впервые, но break
после found_word = True
.
Вы можете заставить свою функцию возвращаться, как только она найдет слово, если вам нужно только найти первое вхождение. Это имеет дополнительный бонус: нет необходимости перебирать весь файл, если в этом нет необходимости.
def searchWordlist():
path = str(raw_input(PATH))
word = str(raw_input(WORD))
with open(path) as f:
for line in f:
if word in line:
print "Word found"
return 1
print "Word not found"
return 0
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.