2016-05-01 4 views
-1

私はPythonで始まりました。私は、この基本的なPythonプログラムとその出力なぜネストされたforループは条件に関係なく最初の値を表示します

for num in range(2,10): 
for i in range(2,num): 
     if (num % i) == 0: 

      break 
    else: 
     print(num) 

出力

 if (2 %2) == 0: 
    break  

その後、条件を1として

Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:38:48) [MSC v.1900 32 bit  (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> 
    ================= RESTART: C:\Users\ms\Desktop\python\new.py ================= 
2 
3 
5 
7 
>>> 

について少し困惑しているどのように出力表示

から2枚のプリント助けてくれてありがとう..

+0

2,3,5,7は素数であるため、 – tilz0R

+0

実際のコードと正確に一致するようにインデントを修正できますか? 「else」が何であるかははっきりしない。 – TigerhawkT3

答えて

0

numが2のとき、内側ループの文は実行されません。range(2, 2)は空のシーケンスを返します。これにより当然内側ループが完了し、elseステートメントが実行された後に完了します。

Python tutorialは、ループ内elseについて以下の説明があります。

ループ文はelse節を有していてもよいです。 (forを使用して)リストが使い尽くされたとき、または条件がfalse(whileとともに)になったときに実行されますが、ループがbreak文で終了するときは実行されません。これは、素数を検索する次のループによって例示される。

0

あなたのインデントが間違っているようです。別のインデントと同じコードを試してみてください。

for num in range(2,10): 
    for i in range(2,num): 
     if (num % i) == 0: 
      break 
     else: 
      print(num) 

をあなたの元のコードではelseがあなたのifと第二forループと一致していません。

関連する問題