如何在正确的时间发生无效代码消息重复停止

时间:2016-10-23 08:04:24

标签: python

我正在编写一个程序,只根据部分字符串搜索特定行的txt文件。如果找不到该字符串,则应该打印一次未找到,但它会多次打印。即使在缩进和使用正确的代码后,它仍会打印出来:

3 个答案:

答案 0 :(得分:1)

else套件在for正常终止后执行(而不是中断)。 所以它肯定会在你的代码中执行else语句,因为你不会在for循环中中断。

答案 1 :(得分:0)

你对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块,只有在循环中没有元素时才会显示。

答案 2 :(得分:-1)

您也可以尝试使用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."

它不断重复的原因是因为代码会检查每一行,并且只要没有匹配,对于不匹配的每一行都会打印“无效代码”(即使它已经找到了一行)< / p>

PS:除非您使用with,否则请确保将search.close()放在最后