我想打印" Match Found"以及如果搜索在文件中的一行中匹配所在的行。注意 - 匹配可以在多行中,如果是这样,它应该打印匹配所在的每一行。我有这部分工作,但我想打印"匹配未找到"如果搜索不在整个文件中,则一次。到目前为止,无论我试过什么,都打印出#34;匹配未找到"对于搜索不存在的每一行,或者打印出#34;匹配未找到"打印完搜索后的行。
f = open("cars.txt", "r+")
search = input("What do you want to search for? ")
for line_split in f:
if search in line_split:
print ("You searched for %s." % search)
print ("Match Found.")
print (line_split)
print ("--------------------")
else:
print ("You searched for %s" % search)
print ("Match Not Found.")
print ("--------------------")
f.close
答案 0 :(得分:0)
else
的{{1}}块是一个很好的选择,如果你找到一个项目后必须for
迭代;但事实并非如此。
我认为您可能需要设置标记而不是使用break
并在else
完成后进行测试:
for
答案 1 :(得分:0)
首先,我认为你误解了for循环后“else”语句的工作方式。只有在for循环没有中断时才会执行。
n = 10
for idx in range(n):
if idx > 11:
print('Yey, we reached {}'.format(idx))
break
else:
print('Damn, we almost had it!')
此代码将导致:
Damn, we almost had it!
但如果我们改变n = 20,我们将得到:
Yey, we reached 12
我看到你的代码中没有“中断”,所以它是一个意图错误,或者你只是没有意识到这一点。
我已经被告知,我不会发布下一个解决问题的方法。我只是想让你知道在for循环之外使用“else”语句的区别。