2016-07-21 15 views
0

私はPythonを使ってメソッドを書いていますが、continueステートメントが正しく動作していないと思います。いくつか私に何が間違っていることを説明することができますか?Pythonはうまくいきません。

メソッドのコードは以下の通りです:

def xlToLinkedDt(lst1, lst2, name1, name2): 
     logging.info(">> New iteration") 
     dates1, times1, dates2, times2 = [], [], [], [] 
     for i, (dt1, dt2) in enumerate(zip(lst1, lst2)): 
      if bool(dt1) + bool(dt2) == 1: 
       name = name1 if not dt1 else name2 
       issues.append("The %s date of trip no. %d must be provided." %(name, i+1)) 
       dates1.append("") 
       dates2.append("") 
       times1.append("") 
       times2.append("") 
       logging.info("Exiting loop") 
       continue 

      logging.info(Continued after bool condition.) 
      raise AssertionError("Stop!") 

私はこのコードを実行すると、私は繰り返しのいずれかでエラーと、次のログを取得:コードは、ログに記録することになっていません

>> New iteration 
>> Exiting loop 
>> Continued after bool condition 

を両方のメッセージ、それらのうちの1つだけ。また、私がcontinuebreakに置き換えたとき、それはうまくいった。私は何が欠けていますか?

+1

ブレークループには、「break」を使用する必要があります。 –

+1

'if'ブロックに達した後、連続した繰り返しで到達しません。あなたは代わりに 'break'を使用することを検討すべきです –

答えて

2

コードは両方のメッセージを記録することは想定されていません。

はい、あります。

を実行した後、を実行すると、ループはforループ内のブロックの先頭に戻り、次の繰り返しでブロックの先頭に戻ります。 ifブロックの条件が次の反復で満たされない場合は、記述したとおりの動作が得られます。

In [5]: for i in range(10): 
    print("Trying with i={:d}".format(i)) 
    if i%2 == 0: 
     print("`i` even, continuing") 
     continue 
    print("What am I doing here?") 
    ...:  
Trying with i=0 
`i` even, continuing 
Trying with i=1 
What am I doing here? 
Trying with i=2 
`i` even, continuing 
Trying with i=3 
What am I doing here? 
Trying with i=4 
`i` even, continuing 
Trying with i=5 
What am I doing here? 
Trying with i=6 
`i` even, continuing 
Trying with i=7 
What am I doing here? 
Trying with i=8 
`i` even, continuing 
Trying with i=9 
What am I doing here? 

ご覧のとおり、まだありますか?私はここで何をしていますか?iの後に印刷されても、の通知が続きますが、それはループの後の反復に属します。私たちはbreakcontinueを交換する場合、我々は非常に異なる動作を取得:

In [6]: for i in range(10): 
    print("Trying with i={:d}".format(i)) 
    if i%2 == 0: 
     print("`i` even, not continuing") 
     break 
    print("What am I doing here?") 
    ...:  
Trying with i=0 
`i` even, not continuing 

あなたが見ることができるように、それがために(我々の定義で)すぐに停止し、0でさえあります。

+0

申し訳ありません>>私は>>メソッドを開始したことを忘れていました。 >>終了ループ >>ブール状態の後に続きます。 – Y2H

0

あなたはcontinueを使用しました。あなたはbreakを意味すると思います。

continueあなたのforループの次の繰り返しにスキップします。 breakは、forループを終了します。

はそれを試してみてください。

def test(): 
    print("Function start") 
    for i in range(10): 
     if i == 1: 
      print("Exiting loop") 
      continue 

     print("Am I printed or not ?") 
    print("I'm out of the loop") 

その後breakcontinueを交換し、何が起こるかを参照してください。 print("Am I printed or not ?")forループの一部であるため、continueを使用すると、 "Exiting loop"の後の次の繰り返しで実行されます。 breakを使用すると、スキップされます。

+0

うん、私は明らかにそれを知っています。私はあなたがその質問を理解したとは思わない。 – Y2H

関連する問題