#python
#python
Вопрос:
Я пишу программу для поиска в текстовом файле определенной строки, основанной только на части строки. Если строка не найдена, она должна напечатать not found один раз, но она печатает ее несколько раз. Даже после отступа и использования правильного кода он все еще печатается:
Комментарии:
1. Переиндентируйте ваш
else
блок, чтобы он совпал с вашимif
Ответ №1:
набор else выполняется после того, как for завершается нормально (не прерыванием). таким образом, он определенно выполнит оператор else в вашем коде, потому что вы не прерываете цикл for.
Ответ №2:
У вас был неправильный отступ с else, это правильный код:
num = raw_input("Type Number : ")
search = open("TableOfProducts.txt","r")
for line in search.readlines():
if num in line:
print line
else:
print ("invalid code. ")
break
Причина, по которой это не привело к возникновению ошибки, заключается в том, что в for
циклах также может быть else
блок, который отображается только в том случае, если в цикле нет элементов.
Комментарии:
1. это вызвало ошибку, поскольку оно напечатало недопустимый код несколько раз вместо одного, это была моя проблема, он выполнялся через весь файл.
Ответ №3:
Вы также можете попробовать использовать try
/ except
. Таким образом, вы можете предоставить «недопустимое» сообщение, если приведенный выше код не может найти соответствие. Смотрите ниже.
num = raw_input("Type Number: ")
with open('TableOfProducts.txt', "r") as search:
for line in search.readlines():
if num in line:
goodline = line
try:
print goodline
except:
print "Invalid code."
Причина, по которой оно продолжает повторяться, заключается в том, что код будет проверять каждую строку, и пока совпадений нет, для каждой строки, которая не совпадает, он будет печатать «недопустимый код» (даже если он уже нашел один)
PS: Если вы не используете with
, как показано выше, убедитесь, что вы поставили search.close()
в конце