为什么嵌套for循环打印它的第一个值而不管条件

时间:2016-05-01 11:07:51

标签: python

我是python的初学者。我对这个基本的python程序及其输出感到困惑

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

           break
    else:
       print(num)

输出

 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
 >>> 

根据条件

     if (2 %2) == 0:
     break      

然后2如何打印到输出显示

感谢您的帮助..

2 个答案:

答案 0 :(得分:0)

你的缩进似乎是错误的。尝试使用不同缩进的相同代码:

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

在原始代码中,else与第二个for循环对齐,而不与if对齐。

答案 1 :(得分:0)

if为2时,内部循环中的num语句不会在第一次迭代时执行,因为range(2, 2)将返回空序列。这自然导致内部循环完成,从而执行else语句。

Python tutorial对循环中的else有以下解释:

  

循环语句可能有一个else子句;当循环通过列表耗尽(with for)或条件变为false(with while)时终止,但是当循环被break语句终止时,它被执行。这通过以下循环来举例说明,该循环搜索素数