鱼C论坛

 找回密码
 立即注册
查看: 1687|回复: 17

[已解决]关于continue的简单问题!

[复制链接]
发表于 2017-10-10 07:51:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
for i in range(10):
        if i%2 !=0:
                print(i)
                continue
        i += 2
print(i)

我知道continue是跳出本次循环,开始下一次循环,在循环之前会判断循环的条件。

能否给我讲一讲这个程序是怎么运行判断的吗?有些模糊!
最佳答案
2017-10-10 09:20:58
  1. for i in range(10):
  2.     if i % 2 != 0:
  3.        # print(i)
  4.         continue
  5.     i += 2
  6.     print(i)  
  7. print("================")


  8. for i in range(10):
  9.     if i % 2 != 0:
  10.         continue
  11.         print(i)
  12.     i += 2
  13.     print(i)  
  14. print("================")


  15. for i in range(10):
  16.     if i % 2 != 0:
  17.         continue
  18.         print("跳过")
  19.     else:
  20.         i += 2
  21.         print(i)  
复制代码

这三种方法是等价的。当然if else语句中if语句的执行语句不能为空。所以用这样print("跳过")代替。如果这里写上continue也是一样的。
  1. for i in range(10):
  2.     if i % 2 != 0:
  3.         print(i)
  4.     else:
  5.         i += 2
  6.         print(i)  
  7. print("================")

  8. for i in range(10):
  9.     if i % 2 != 0:
  10.         print(i)
  11.         continue
  12.     i += 2
  13.     print(i)  
复制代码

这两种写法也是等价的。而if else是执行if如果为真,则跳过else语句。
所以这也解释了,其实continue只是跳出本次循环。

                               
登录/注册后可看大图



==============补充补充补充补充补充补充补充补充补充补充补充================
  1. for i in range(10):
  2.     if i % 2 != 0:
  3.         print('这里将打印一个1:',i)
  4.         print('再执行完break后退出')
  5.         break
  6.     i += 2
  7.     print('这里将打印一个2:',i)  

  8. print("================")
  9. for i in range(10):
  10.     if i % 2 != 0:
  11.         break
  12.         print(i)
  13.     i += 2
  14.     print(i)  

  15. print("================")
  16. for i in range(10):
  17.     if i % 2 != 0:
  18.         print(i)
  19.         break
  20.     i += 2
  21.     print(i)  
复制代码

这里如果是break的话,的情况

                               
登录/注册后可看大图

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-10 08:42:30 | 显示全部楼层

回帖奖励 +10 鱼币

把笔和纸拿出来画画,就很清楚了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 08:45:34 | 显示全部楼层

回帖奖励 +10 鱼币

本帖最后由 zata 于 2017-10-10 09:01 编辑

最后那个print(i) 都不在循环内
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 08:47:49 | 显示全部楼层

回帖奖励 +10 鱼币

本帖最后由 ooxx7788 于 2017-10-10 08:49 编辑

目测那个i+=2根本没用啊

http://pythontutor.com/visualize.html#mode=edit

至于流程可以上这个网站上,把代码复制进去就清楚了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 09:00:30 | 显示全部楼层

回帖奖励 +10 鱼币


  1. for i in range(10): #循环列表,从0到9
  2.         if i%2 !=0: #判断条件如果i是奇数,则条件为真
  3.                 print(i) #打印奇数
  4.                 continue #跳出本次循环,进入下一次
  5.         i += 2 #如果是偶数,则执行这里,i递增2
  6. print(i )#打印最终的i,上面的分析可以看出,应该打印8
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 09:07:57 | 显示全部楼层
zata 发表于 2017-10-10 08:45
最后那个print(i) 都不在循环内
  1. for i in range(10):  
  2.         if i%2 != 0:  
  3.             print(i)
  4.             continue
  5.         i += 2      
  6.         print(i)  #这里需要改一下,不然i+= 2没有意义,同样print(i)不在循环内不会打印

  7. #i从0到9依次进行下面if判断
  8. # i=0的时候条件不成立,进行 i+=2,打印计算后的i=2,继续循环
  9. # i=1            成立,打印 i=1,跳出本次循环不进行下面运行,继续循环.......一直到i=9
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 09:20:58 | 显示全部楼层    本楼为最佳答案   
  1. for i in range(10):
  2.     if i % 2 != 0:
  3.        # print(i)
  4.         continue
  5.     i += 2
  6.     print(i)  
  7. print("================")


  8. for i in range(10):
  9.     if i % 2 != 0:
  10.         continue
  11.         print(i)
  12.     i += 2
  13.     print(i)  
  14. print("================")


  15. for i in range(10):
  16.     if i % 2 != 0:
  17.         continue
  18.         print("跳过")
  19.     else:
  20.         i += 2
  21.         print(i)  
复制代码

这三种方法是等价的。当然if else语句中if语句的执行语句不能为空。所以用这样print("跳过")代替。如果这里写上continue也是一样的。
  1. for i in range(10):
  2.     if i % 2 != 0:
  3.         print(i)
  4.     else:
  5.         i += 2
  6.         print(i)  
  7. print("================")

  8. for i in range(10):
  9.     if i % 2 != 0:
  10.         print(i)
  11.         continue
  12.     i += 2
  13.     print(i)  
复制代码

这两种写法也是等价的。而if else是执行if如果为真,则跳过else语句。
所以这也解释了,其实continue只是跳出本次循环。

                               
登录/注册后可看大图



==============补充补充补充补充补充补充补充补充补充补充补充================
  1. for i in range(10):
  2.     if i % 2 != 0:
  3.         print('这里将打印一个1:',i)
  4.         print('再执行完break后退出')
  5.         break
  6.     i += 2
  7.     print('这里将打印一个2:',i)  

  8. print("================")
  9. for i in range(10):
  10.     if i % 2 != 0:
  11.         break
  12.         print(i)
  13.     i += 2
  14.     print(i)  

  15. print("================")
  16. for i in range(10):
  17.     if i % 2 != 0:
  18.         print(i)
  19.         break
  20.     i += 2
  21.     print(i)  
复制代码

这里如果是break的话,的情况

                               
登录/注册后可看大图

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 11:30:10 | 显示全部楼层

貌似你是错的,你自己输进去看看答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 11:51:33 | 显示全部楼层
唱离歌的老鼠 发表于 2017-10-10 11:30
貌似你是错的,你自己输进去看看答案


看错了,重新解释一下

  1. for i in range(10): #循环列表,从0到9
  2.     if i%2 !=0: #判断条件如果i是奇数,则条件为真
  3.             print(i) #打印奇数
  4.             continue #跳出本次循环,进入下一次
  5.     i += 2 #如果是偶数,则执行这里i=i+2,此处无意义,因为下一次循环还是i=i+1
  6. print(i)#打印最终的i=9
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 12:31:56 | 显示全部楼层
你这程序能运行???

i += 2那一行就会报错啊。而且你的print(i)语句不在for循环内部,所以只会打印出 i 最后的值。循环体内部的print(i)要想打印,必须是else:i+=2才行啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 12:32:54 | 显示全部楼层
铁棍阿童木 发表于 2017-10-10 12:31
你这程序能运行???

i += 2那一行就会报错啊。而且你的print(i)语句不在for循环内部,所以只会打印 ...

能运行,答案是:1,3,5,7,9,9  你可以运行试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 12:33:25 | 显示全部楼层
~风介~ 发表于 2017-10-10 08:42
把笔和纸拿出来画画,就很清楚了

纯粹混鱼币来的,哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 12:34:16 | 显示全部楼层
zata 发表于 2017-10-10 08:45
最后那个print(i) 都不在循环内

我已经明白了,谢谢。哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 12:36:00 | 显示全部楼层
唱离歌的老鼠 发表于 2017-10-10 12:32
能运行,答案是:1,3,5,7,9,9  你可以运行试试

加个else:让程序完整性更好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 14:45:00 | 显示全部楼层
continue 退出本次循环继续下一循环, continue后面如果还有语句将不会被执行。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 15:02:22 | 显示全部楼层
continue是当执行到这个命令时,不执行continue后面的语句,直接结束当次循环进入下一次循环。就相当于到了这里循环次数就加1.重新开始执行循环体
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 16:00:08 | 显示全部楼层
自己运行程序看结果,再改代码再验证
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-17 23:17:04 | 显示全部楼层
我是买了小甲鱼的书,看到本章节的,这个也让我很迷惑,所以搜到了本贴,,,各位大神的回复也让我很迷惑,后来我添加了几句话就把整个流程了解了..希望对大家有帮助
for i in range(10):
        print('本次循环为:',end='')
        print(i)
        if i  %2 != 0:
                print('te:',end='')
                print(i)
                continue
        print('i准备+2')
        i += 2
        print(i)

       
本次循环为:0
i准备+2
2
本次循环为:1
te:1
本次循环为:2
i准备+2
4
本次循环为:3
te:3
本次循环为:4
i准备+2
6
本次循环为:5
te:5
本次循环为:6
i准备+2
8
本次循环为:7
te:7
本次循环为:8
i准备+2
10
本次循环为:9
te:9
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 21:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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