循环和if else问题

for num in range(10,20):
for i in range(2,num):
if num%i==0:
j=num/i
print('%d is equal to %d*%d'%(num,i,j))
break
else:
print('是个素数')
为什么else是在for下面不是在if下面?

for...else...是python的语法,只有for循环正常退出而不是通过break退出时,才会调用else内的代码段
因为只有走完了内层循环,才能确定一个数是质数,如果再次之前退出循环,便不是质数
缩进应该是这样的

for num in range(10,20):
    for i in range(2,num):
        if num%i==0:
            j=num/i
            print('%d is equal to %d*%d'%(num,i,j))
            break
    else:
        print(f'{num} 是个素数')

-----------------------------更新-----------------------------------
为了显示更加清晰,我改了一下else的print语句,改用f-string进行输出

注意我的缩进。


for num in range(10,20):
    for i in range(2,num):
        if num%i==0:
            j=num/i
            print('%d is equal to %d*%d'%(num,i,j))
            break
        else:
            print('是个素数')