2016-06-25 5 views
0

で速報されていないが、私はこのようなプログラムがあります。ループは、Python

def read(): 
    while True: 
     for line in temp1: 
      if event in line: 
       print temp1.next() 
      elif date in line: 
       print temp1.next() 
      elif ending in line: 
       print 'End of file' 
       break 
event = '1' 
date = '2' 
ending = '3' 
temp1 = open('test.txt') 

そしてtest.txtという次のようになります。

1 
ABC 
2 
CAB 
3 

プログラム出力する:

ABC 
CAB 

をそしてそれは無限ループに入ります。 これを修正する方法はありますか?

+0

テキストファイルは行単位で区切られていますか?それとも、すべて1行かカンマ区切りですか?また、無限ループに入る前にコードの出力を投稿してください。 – rb612

+3

'break 'はwhileループではなくforループから抜け出しています。 – johmsp

+0

はいそれは行ごとに区切られていますが、フォーマットが出てこなかった –

答えて

4

break文は、forループ(ヒットした場合)から壊れます。実際には、ループも同様に出てこないわけではありません。ループ全体がのループで処理されるため、whileループが何であるか分かりません。既に関数に入っているので、returnステートメントを使用して複数のループを解除することができます(余分なループを取り除く方が良いでしょう)。

+0

ありがとうBlckknght! –

0

最初のbreak文の後の行に2番目のbreak文を追加しますが、for文で2番目のbreak文を整列します。