2017-09-05 4 views
-1
i = 1 
for k in (range(1, 21)): 
    if i % k > 0: 
    for j in range(1, 21): 
     if (i*j) % k == 0: 
     i *= j 
     break 

print (i) 

出力:232792560は、このコードは20条件が満たされた場合にステートメントが続行されるか、条件が満たされた後でも続行されるのはなぜですか?

に1間のすべての数値によって、最小の複数割り切れるを見つけることが書かれている

私の質問は、なぜ"if i % k > 0"を続けるんされている場合1 % 1 == 0?(ライン3)

"if (i*j) % k == 0"(行5)に続いてなぜjとkは2回折れるのではなく2回続くのはなぜですか?

+1

プログラムがどのように動作するのかわかりませんが、 'break'は1つの' for'ループを壊すだけです。 「完全な中断」の場合、関数内で 'return'ステートメントを使用できます。 – Julien

答えて

1

、内側のループのために起こりました。私があなたがやりたがっていると思われる両方のものから脱出するには、ブール条件が必要です。

break文の直前に変数を 'True'に設定し、内部ループの外側で条件が真であるかどうかを確認することができます。そうであれば、breakステートメントが満たされているので、別のbreakステートメントを使用して外側のループを終了することができます。

関連する問題