找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1976|回复: 2

[求助] break跳出循环

1

主题

2

帖子

2

积分

贫民

积分
2
QuentinXu 发表于 2018-2-4 15:20:57 | 显示全部楼层 |阅读模式
本帖最后由 QuentinXu 于 2018-2-4 18:36 编辑

各位大神,本人初学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,我想知道这是为什么,请各位大神帮助

回复

使用道具 举报

1

主题

2

帖子

2

积分

贫民

积分
2
QuentinXu  楼主| 发表于 2018-2-5 09:52:25 | 显示全部楼层
自己来顶顶,天灵灵地灵灵,大神们速速现身快显灵
回复 支持 反对

使用道具 举报

12

主题

22

帖子

22

积分

贫民

积分
22
弹琴复长啸 发表于 2018-2-8 17:30:20 | 显示全部楼层
第一个break不在if里面,所以无论满不满足if条件,都执行break,跳出循环,所以i永远都等于2;第二个break在if里面,只有满足if条件时,才执行break,跳出循环,比如当num = 15时,i = 2,3;num = 5时, i=2,3,4
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表