为什么这个else不缩进之后是素数就只输出一遍?

如图,将else的缩进取消后,如果输入一个素数则只输出一遍结果,else这么加的原因是什么?它对应的还是上面的if么?

img

python严格控制缩进,要和if对齐,你取消之后他会和else匹配形成for else结构
如果break提前退出迭代,则else子句不会被执行

num=[]
x=int(input())
i=2
for i in range(2,x):
   j=2
   for j in range(2,i):
      if(i%j==0):
         break
   else:
      num.append(i)
print(num)

img

for ...else语句中,只有循环完所有次数,才会执行 else 。当执行到break时,不再执行else语句块,break 可以阻止 else 语句块的执行。