0

私はまだ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には、から大文字までのほぼすべてが含まれています。

4

1 に答える 1

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?"

に注意してくださいbreakforループから抜け出すことにより、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?"
于 2013-03-29T12:43:59.807 に答える