Python 为什么嵌套for循环打印其第一个值而不考虑条件

Python 为什么嵌套for循环打印其第一个值而不考虑条件,python,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

我擅长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如何打印到输出显示器上


感谢您的帮助。

您的缩进似乎有误。尝试使用不同缩进的相同代码:

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

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

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

对循环中的
else
有以下说明:

循环语句可能有一个else子句;当循环通过耗尽列表(使用for)或当条件变为false(使用while)而终止时执行,但当循环通过break语句终止时不执行。下面的循环就是一个例子,它搜索素数


因为2,3,5,7是素数。你能修正你的缩进以精确匹配你的实际代码吗?现在还不清楚那
还属于什么。