break跳出循环

0
各位大神,本人初学python菜鸟一枚,今天学到for...else循环语句时,发现break不同的缩进距离程序报的结果不一样,我想知道为什么,还望各问大神相助!代码和输出结果如下
1.代码1
for num in range(10,20):  # 迭代 10 到 20 之间的数字
    for i in range(2,num):   # 根据因子迭代
        if  num%i == 0:      # 确定第一个因子
            j=num/i          # 计算第二个因子
            print( '%d 等于 %d * %d' % (num,i,j))#打印num的两个因子
        break

    结果:
    10 等于 2 * 5,12 等于 2 * 6,14 等于 2 * 7,16 等于 2 * 8,18 等于 2 * 9
2.代码2
for num in range(10,20):  # 迭代 10 到 20 之间的数字   
    for i in range(2,num):   # 根据因子迭代        
        if  num%i == 0:      # 确定第一个因子            
            j=num/i          # 计算第二个因子           
            print( '%d 等于 %d * %d' % (num,i,j))#打印num的两个因子           
            break
    结果:
    10 等于 2 * 5,12 等于 2 * 6,14 等于 2 * 7,15 等于 3 * 5,16 等于 2 * 8,18 等于 2 * 9
    与第一个代码相比,第二个代码的break多缩进了4个空格,结果就多报了一个15等于3*5,我想知道这是为什么。附件是代码请各     位大神帮助
    
已邀请:
0

li052468 2018-02-05 回答

第一个的时候break在if外面,当num是15,i是2的时候,if是假,然后执行了break,退出了15的循环;第二个break在if里面,num是15,i是2的时候,if是假,然后i变成3重新if判断

要回复问题请先登录注册