Python详细对比讲解break和continue区别

发布时间:2023-09-01 09:30

目录
  • 前言
  • break
    • 例子
  • continue
    • 例子
  • 对比

    前言

    最近在回答问答python区的问题的时候,发现很多人对于这个break和continue分不清。所以,今天我就写篇文章来讲一下(绝对不是为了方便我以后回答的时候复制)

    break

    在while和for循环中,只要满足一定的条件,程序就会结束,或者进入无限循环的境地。这个时候,我们就需要一个东西来帮助我们在满足某种条件的情况下,主动结束循环。或者说,我们希望有一个东西,能在循环的过程中的某个特定的阶段跳出,结束循环。

    break长和if,elif,else搭配。

    break的用法很简单,就像它定义所说的,就是跳出循环。但是,有几个需要注意的点:

    1. break只跳出一层循环:for-for嵌套遍历的情况的话,一个break只会跳出一个循环。如果这个break是在最里面的话,就只会结束里面for的循环,进入下一个外面for的循环。

    2. break跳出是绝对跳出,这个跳出的循环不会再继续循环了(除非是循环嵌套)。

    3. break在while-else,for-else循环的时候会起到不一样的效果。

    a = 0
    while(a<10):
        print(a)
        if a == 8:
            break
        a+=1
    else:
        print(\"ok\")

    result:
    0
    1
    2
    3
    4
    5
    6
    7
    8

    a = 0
    while(a<10):
        print(a)
        a+=1
    else:
        print(\"ok\")

    result:
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ok

    例子

    题目来源:牛客网编程NP9报数游戏

    牛牛在和朋友玩报数游戏,他和朋友们围成一圈,共有n个人,牛牛最初站在第m个位置。从第一个人开始报数,但凡报到3的倍数或者含三的数的人就退出圈子。请问牛牛是第几个退出圈子的人?

    输入描述:

    第一行输入n,n>2

    第二行输入m,m

    输出描述:

    输出一个整数表示每次有人退出时那个人的编号

    输出一个整数表示牛牛是第几个退出圈子的人

    思路:

    while-for嵌套,确保这个会无限进行,然后加上两个break,一个是在牛牛是最后一个人的时候break,另一个是牛牛成为退出的人的时候break

    代码:

    a = int(input())
    b = int(input())
    ls = [i for i in range(1,a+1)]
    c = []
    flag = True
    cout = 0
    num = 0
    while True:
        for i in range(1,len(ls)+1):
            num += 1
            if num % 3 == 0 or \"3\" in str(num):
                print(\"编号为{}的淘汰了\".format(ls[i-1]))
                c.append(ls[i-1])
                cout += 1
                if ls[i-1] == b:
                    print(\"第{}个\".format(cout))
                    flag = False
                    break
        ls = [i for i in range(1,a+1) if i not in c]
        if not flag:
            break

    continue

    continue会跳过(忽略)当次循环的剩下语句,接着开始下一次循环。多数和if一起使用,少数会出现在别的情况。

    尽管continue会在if里面出现,但是一旦运行了continue,if外面的也会被跳过。

    for i in range(1,3):
        if i % 2 == 0:
            continue
        print(i)
    

    result:
    1

    例子

    题目来源:牛客网编程NP17前十个偶数

    通过给函数 range()指定三个参数来创建一个列表my_list,其中包含 [1,10000] 中的所有奇数;再使用一个 for 循环将这些中是质数数字都打印出来(每个数字独占一行)。

    思路:

    先 range和迭代器一起生成一个list,然后continue搭配if判断,输出。

    代码:

    ls = [i for i in range(2,10001)]
    for i in ls:
        notprime = False
        for j in range(2,i):
            if i % j != 0:
                continue
            notprime = True
            break
        if i == 2:
            notprime = True
        if not notprime:
            print(i)

    对比

    相同:

    1. break 和 continue 都有着结束当前这次循环的作用

    2. break 和 continue 都经常和if 搭配使用

    3. break 和 continue 是单独的语句,不需要参数,也不能放在判断语句中

    不同:

    1. break 是跳出循环,不继续下次循环;continue是结束当前这次循环,但是还继续下次循环

    2. break 对 for else 和 while else 有特殊的作用,continue没有

    3. break 应用的要比continue广,多数情况下用 break 而不是 continue

    到此这篇关于Python详细对比讲解break和continue区别的文章就介绍到这了,更多相关Python break和continue内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    ItVuer - 免责声明 - 关于我们 - 联系我们

    本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

    桂ICP备16001015号