Python(2):探究continue和break的区别

先看基本解释
(1)continue和break都用于循环语句中,python中主要的循环结构有for循环和while循环两种。
(2)执行break语句,会使得break语句所属层次的循环提前结束。
(3)执行continue语句,作用是提前结束本次循环,提前进入下一次循环。
进行代码实验
1.

#代码一:
a = [1, 2, 3]
for i in a:
    print("铅笔")
    break
print(i)
#代码二:
a = [1, 2, 3]
for i in a:
    print("铅笔")
    continue
print(i)

结果如下:

#代码一
铅笔
1
#代码二
铅笔
铅笔
铅笔
3

对比可以看出:代码一只执行了1次,而代码二循环了3次
2.

#代码一
a = [1, 2, 3]
for i in a:
    print("铅笔")
    break
    print("这是一只铅笔")
print(i)
#代码二
a = [1, 2, 3]
for i in a:
    print("铅笔")
    continue
    print("这是一只铅笔")
print(i)
#代码三
a = [1, 2, 3]
for i in a:
    print("铅笔")
    print("这是一只铅笔")
print(i)

结果如下:

#代码一
铅笔
1
#代码二
铅笔
铅笔
铅笔
3
#代码三
铅笔
这是一只铅笔
铅笔
这是一只铅笔
铅笔
这是一只铅笔
3

对比代码一二三,得出break和continue语句执行后,后面在循环内的语句直接忽略。

3.以判断一个数n是否为素数为例进行进一步研究

基础知识:
(1)素数是指:在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
(2)1不是素数
基本思想:
(1)用if判断,如果这个数等于1,直接输出不是素数;如果这个数不等于1,进行下一步判断。
(2)指定一个参数,让它从2循环到n-1,只要有一个i满足表达式n%i == 0,则直接输出这个数不是 素数,如果没有i满足上述表达式,那么输出这个数是素数。
基本判断:
这里使用break语句,因为我们只要判断出有一个i满足表达式即可证明n不是素数,不需要都循环一遍。

def sushu(n):                          #定义一个函数
    if n == 1:
        print("不是素数")
    elif n != 1:
        for i in range(2, n):
            if n % i == 0:
                print("不是素数")
                break                  
        else:
            print("是素数")
sushu(8)                             

结果如下

不是素数

如果用continue

def sushu(n):
    if n == 1:
        print("不是素数")
    elif n != 1:
        for i in range(2, n):
            if n % i == 0:
                print("不是素数")
                continue
        else:
            print("是素数")
sushu(8)

结果如下

不是素数
不是素数
是素数

4.用两个循环进一步理解
问题描述:给定两个列表a和b,判断是否存在a中的一个元素与b中的一个元素相加等于给定元素n,如果存在,输出成功。

#代码一
def hanshu(n):
    a = [1, 2, 3, 4, 5, 6]
    b = [7, 8, 9, 10, 11, 12, 13]
    for i in a:                    #语句1
        for j in b:                #语句2
            if i + j == n:         #语句3
                print("成功")      #语句4
                break              #语句5
hanshu(13)

分析:
(1)我们知道:1+12=13;2+11=13;3+10=13…
(2)语句1执行,此时i=1
(3)语句2执行,此时j=7
(4)语句3执行,但此时i+j !=13,所以回到语句2
(5)语句2执行,此时j=8
(6)语句3执行,但此时i+j !=13,所以回到语句2
以此类推…
(7)语句2执行,此时j=12
(8)语句3执行,此时i+j=13,与给定数字相同,所以执行语句4,输出“成功”
(9)语句5执行,跳出当前j的循环(也就是说j不会再等于13),执行语句1,此时i=2
以此类推…
结果:

成功
成功
成功
成功
成功
成功
#代码二
def hanshu(n):
    a = [1, 2, 3, 4, 5, 6]
    b = [7, 8, 9, 10, 11, 12, 13]
    for i in a:                       #语句1
        for j in b:                   #语句2
            if i + j == n:            #语句3
                print("成功")         #语句4
        continue                      #语句5
hanshu(13)

分析:
过程和代码一相同
比较两个代码:
(1)两个代码所实现的功能相同,执行语句的模式也相同。
(2)但是如果将代码二continue的位置换成break,则这个函数的功能将会改变。(注意:python严格使用缩进来体现代码的逻辑从属关系,代码三和代码一中的break位置不同!)

def hanshu(n):
    a = [1, 2, 3, 4, 5, 6]
    b = [7, 8, 9, 10, 11, 12, 13]
    for i in a:                    #语句1
        for j in b:                #语句2
            if i + j == n:         #语句3
                print("成功")      #语句4
        break                      #语句5
hanshu(13)

分析:
(1)当执行到1+12=13时,输出“成功”,
(2)执行语句2,此时j=13
(3)执行语句5,break跳出了i的循环,也就是说i并没有等于2,3,4,5,6
结果如下:

成功

所以,在某种意义上来说,代码三并没有完成题目所给要求。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值