Crossin的编程教室

标题: 【Python 第35课】 continue [打印本页]

作者: mty1111    时间: 2013-7-25 19:26
标题: 【Python 第35课】 continue
break是彻底地跳出循环,而continue只是略过本次循环的余下内容,直接进入下一次循环。


在我们前面写的那个统计分数的程序里,如果发现有成绩不足60分,就不记入总成绩。当然,你可以用if判断来实现这个效果。但我们今天要说另一种方法:continue。
  1. for score in data[1:]:
  2.    point = int(score)
  3.    if point < 60:
  4.        continue
  5.    sum += point
复制代码
注意:无论是continue还是break,其改变的仅仅是当前所处的最内层循环的运行,如果外层还有循环,并不会因此略过或跳出。

在脑中模拟运行下面这段程序,想想会输出什么结果。再敲到代码里验证一下:
  1. i = 0
  2. while i < 5:
  3.    i += 1
  4.    for j in range(3):
  5.        print j
  6.        if j == 2:
  7.            break
  8.    for k in range(3):
  9.        if k == 2:
  10.            continue
  11.        print k
  12.    if i > 3:
  13.        break
  14.     print i
复制代码
#==== Crossin的编程教室 ====#
微信ID:crossincode
QQ群:312723402

面向零基础初学者的编程课
每天5分钟,轻松学编程





作者: 匠逍之岿    时间: 2013-8-24 18:32
最后这段代码不太理解,i  j  k分别代表着什么?什么时候横着输出,什么时候竖着输出呢?
作者: crossin先生    时间: 2013-8-26 21:15
匠逍之岿 发表于 2013-8-24 18:32
最后这段代码不太理解,i  j  k分别代表着什么?什么时候横着输出,什么时候竖着输出呢? ...

i j k就是三个用来记录循环次数的量。这段代码其实没什么特别意义,只是让你试着体会continue和break的不同效果。可以把代码运行一下,根据结果来分析代码的运行路径
作者: muneer    时间: 2015-4-13 20:58
最后这段代码,没看明白,打印的结果和自己想的不一样,能详细讲下流程么,谢谢。
作者: crossin先生    时间: 2015-4-14 13:10
muneer 发表于 2015-4-13 20:58
最后这段代码,没看明白,打印的结果和自己想的不一样,能详细讲下流程么,谢谢。 ...

遇到break就跳出当前一层循环,遇到continue就直接进入当前一层循环的下一次

你可以在程序中的各个循环中 print i,j,k 来看看执行顺序

或者有可以打断点的ide,就单步执行,看看程序是怎么走的
作者: muneer    时间: 2015-4-14 13:57
crossin先生 发表于 2015-4-14 13:10
遇到break就跳出当前一层循环,遇到continue就直接进入当前一层循环的下一次

你可以在程序中的各个循环 ...

昨晚后来自己想明白了,多谢。
作者: 大熊_GXU    时间: 2015-4-23 15:56
在后面那个程序里面把continue改成break运行的结果是一样的呀
作者: cross    时间: 2015-4-27 08:33
周一了 滚回来学习
作者: lovia    时间: 2015-5-28 01:37
  1. #0
  2. #1
  3. #2
  4. #0
  5. #1
  6. #1
  7. #0
  8. #1
  9. #2
  10. #0
  11. #1
  12. #2
  13. #0
  14. #1
  15. #2
  16. #0
  17. #1
  18. #3
  19. #0
  20. #1
  21. #2
  22. #0
  23. #1
  24. i = 0
  25. while i < 5:
  26.    i += 1
  27.    for j in range(3):
  28.        print j #0\n1\n2
  29.        if j == 2:
  30.            break
  31.    for k in range(3):
  32.        if k == 2:
  33.            continue
  34.        print k
  35.    if i > 3:
  36.        break
  37.    print i
复制代码

作者: 追风    时间: 2016-5-6 11:12
crossin先生 发表于 2015-4-14 13:10
遇到break就跳出当前一层循环,遇到continue就直接进入当前一层循环的下一次

你可以在程序中的各个循环 ...

遇到break就跳出当前一层循环,遇到continue就直接进入当前一层循环的下一次
这句话一下子让我明白了
作者: 王小勇    时间: 2016-8-5 10:41
i = 0
while i < 5:
   i += 1
   for j in range(3):
       print (j,j)
       if j == 2:
           break
   for k in range(3):
       if k == 2:
           continue
       print(k,k,k,k)
   if i > 3:
       break
   print (i,i,i)

这样就清楚多了
ps Python 3
作者: 司南    时间: 2018-4-10 19:10
  1. i=0
  2. while i<5:
  3.     i+=1
  4.     for j in range(3):
  5.         print(j)
  6.         if j==2:
  7.             break
  8.     for k in range(3):
  9.         if k==2:
  10.             continue
  11.         print(k)
  12.     if i>3:
  13.         break #此时无小内循环for,故直接跳出大循环
  14.     print(i)

复制代码

作者: jzhan030    时间: 2018-4-16 17:48
i = 0
while i < 5:
    i +=1
    for j in range(3):
        print("j=",j)
        if j == 2:
            break
    for k in range(3):
        if k == 2:
            continue
        print("k=",k)
    if i > 3:
        break
    print('i=',i)

这样会清楚一些。
作者: 495611518    时间: 2018-7-3 09:53
jzhan030 发表于 2018-4-16 17:48
i = 0
while i < 5:
    i +=1

这个很明了啊




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5