Python获得混合结果。

时间:2013-03-29 12:42:04

标签: python conditional-statements

我仍然是python的新手,我从我的脚本中获得“完美结果”时遇到了一些麻烦。

到目前为止,这是我的代码:

#import urllib2
#file = urllib2.urlopen('https://server/Gin.txt')
Q = raw_input('Search for: ')

if len(Q) > 0:
        for line in open('Gin.txt'):    #Will be corrected later..
                if Q.lower() in line.lower():
                        print line 

                #print "Found nothing. Did you spell it correct?" ## problem here. 
else:
        os.system('clear')
        print "You didn't type anything. QUITTING!"

现在代码正常运行。它找到了我正在寻找的东西,但是如果找不到匹配的话。 我想要它打印“什么都没找到......”我得到了各种各样的结果,混合匹配假阳性结果等等......几乎所有结果都是如此。这对你们大多数人来说可能是小菜一碟,但我已经8个多小时了,所以现在我在这里。

如果有更优化/更简单/更漂亮的方式来编写它,请随时纠正我的错误。我的目标是完美!所以我都是眼睛和耳朵。 仅供参考。 gin.txt 包含从!#_'[] 0..9到大写字母的所有内容

1 个答案:

答案 0 :(得分:4)

for循环有一个else:子句。它是在没有提前结束循环时执行的:

for line in open('Gin.txt'):    #Will be corrected later..
    if Q.lower() in line.lower():
        print line 
        break
else:
    print "Found nothing. Did you spell it correct?"

注意break;通过突破for循环,else:套件执行。

这当然会在第一场比赛中停止。如果您需要找到多个匹配项,您唯一的选择是使用某种形式的标志变量:

found = False
for line in open('Gin.txt'):    #Will be corrected later..
    if Q.lower() in line.lower():
        found = True
        print line 

if not found:
    print "Found nothing. Did you spell it correct?"