2016-10-02 48 views
0

"Match Found"と検索すると一致する行を印刷したいファイル内の行注 - マッチは複数の行にすることができます。もしそうならマッチがあるすべての行を出力する必要があります。この部分は動作していますが、検索が全体ではない場合には "Match Not Found"ファイル。これまでのところ、私はすべてのためのいずれかの版画「が見つかりませんでしたマッチ」で検索イマイチに並ぶか、それは検索がである行を印刷した後、「一致するものが見つからない」印刷しますしようとしているものは何でも。検索結果が一致しない場合は、一致した行と一致する行を

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

forelseブロックあなたがアイテムが見つかると、breakの反復をしなければならない場合は素晴らしい選択でした。しかし、そうではありません。

は、私はあなたが完了しforelseとテストを使用する代わりにフラグを設定したいかもしれないと思う:すべての

found = None 
for line_split in f: 
    if search in line_split: 
     ... 
     if not found: 
      found = True 

if not found: 
    print ("You searched for %s" % search) 
    print ("Match Not Found.") 
0

まず、私はあなたがする方法を誤解していると思うか「他"forループの後の文は機能します。 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"ステートメントを使うことの違いを知りたかったのです。

関連する問題