python 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<n

输出描述:

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

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

思路:

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

  • 13
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: Python中的breakcontinue都是控制流语句,但是它们的作用不同。 break语句用于跳出循环,即使循环条件没有完全执行完毕。当程序执行到break语句时,循环会立即停止,程序会跳出循环,继续执行循环后面的代码。 而continue语句则是用于跳过当前循环中的某些代码,直接进入下一次循环。当程序执行到continue语句时,当前循环中continue语句后面的代码都不会执行,程序会直接进入下一次循环。 因此,breakcontinue语句的作用不同,需要根据具体的需求来选择使用哪一个。 ### 回答2: Python中的`break`和`continue`关键字是在循环语句中使用的控制流程的语句,它们具有不同的功能和作用。 `break`语句用于立即终止当前所在循环(for循环或while循环),并跳出循环体执行循环外的下一条语句。当满足某个条件时,可以使用`break`语句来提前结束循环,无论循环还有多少次迭代都将被终止。一旦`break`语句执行,则跳出整个循环,不再执行循环体中剩余的语句。 例如: ```python for i in range(1, 10): if i == 5: break print(i) ``` 以上代码将输出: ``` 1 2 3 4 ``` 在循环执行到`i`等于5时,满足条件,执行`break`语句,跳出循环。 `continue`语句则用于跳过本次循环的剩余代码,并开始下一次迭代。当满足某个条件时,可以使用`continue`语句来提前结束当前循环,直接进行下一次循环的迭代。`continue`语句会让程序跳过本次循环中`continue`语句后的代码,直接进入下一次的循环。 例如: ```python for i in range(1, 5): if i == 3: continue print(i) ``` 以上代码将输出: ``` 1 2 4 ``` 在循环执行到`i`等于3时,满足条件,执行`continue`语句,跳过后面的`print(i)`语句,直接进行下一次的循环。 总结: - `break`语句用于立即终止当前循环并跳出整个循环,不再执行循环体中剩余的语句。 - `continue`语句用于跳过本次循环的剩余代码,并开始下一次迭代。 两者的作用不同,`break`用于结束整个循环,`continue`用于结束本次循环。 ### 回答3: Python中的`break`和`continue`是两个控制流语句,用于在循环中改变程序的执行顺序。 `break`语句用于跳出当前所在的最内层循环(for循环或while循环),并且继续执行该循环之后的语句。当满足某些条件时,可以使用`break`语句来提前结束循环。一旦执行了`break`语句,整个循环就会立即终止,无论循环条件是否还满足。 `continue`语句用于结束当前的循环迭代,并且跳过本次迭代后面的代码,直接开始下一次循环迭代。当某个特定条件满足时,可以使用`continue`语句来跳过本次循环迭代中不需要执行的部分,从而提高程序的效率。不同于`break`语句,`continue`语句并不会终止整个循环,而是只是跳过本次迭代。 可以总结如下: - `break`用于完全终止循环,并且跳出循环体; - `continue`用于跳过本次迭代,并且开始新一轮的循环迭代。 需要注意的是,`break`和`continue`语句只能在循环中使用,否则会导致语法错误。同时,在多层嵌套循环中使用`break`语句时,会提前结束最内层的循环。而使用`continue`语句时,只会跳过当前循环的一次迭代。 这就是`break`和`continue`在Python中的区别所在。根据具体的需求,我们可以选择使用这两个语句来控制循环的执行流程,以达到预期的效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A Python 萌新花花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值