QQ登录

只需一步,快速开始

搜索
查看: 156|回复: 17

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

[复制链接]
最佳答案
0 
累计签到:28 天
连续签到:3 天
发表于 2017-10-10 07:51:22 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

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的话,的情况

                               
登录/注册后可看大图

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
49 
累计签到:1235 天
连续签到:13 天
发表于 2017-10-10 08:42:30 | 显示全部楼层

回帖奖励 +10

把笔和纸拿出来画画,就很清楚了
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:25 天
连续签到:12 天
发表于 2017-10-10 08:45:34 | 显示全部楼层

回帖奖励 +10

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

最后那个print(i) 都不在循环内
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
130 
累计签到:226 天
连续签到:4 天
发表于 2017-10-10 08:47:49 | 显示全部楼层

回帖奖励 +10

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

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

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

至于流程可以上这个网站上,把代码复制进去就清楚了
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
24 
累计签到:125 天
连续签到:26 天
发表于 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
复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:25 天
连续签到:12 天
发表于 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
复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
6 
累计签到:43 天
连续签到:4 天
发表于 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的话,的情况

                               
登录/注册后可看大图

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:28 天
连续签到:3 天
 楼主| 发表于 2017-10-10 11:30:10 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
24 
累计签到:125 天
连续签到:26 天
发表于 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
复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
6 
累计签到:41 天
连续签到:37 天
发表于 2017-10-10 12:31:56 | 显示全部楼层
你这程序能运行???

i += 2那一行就会报错啊。而且你的print(i)语句不在for循环内部,所以只会打印出 i 最后的值。循环体内部的print(i)要想打印,必须是else:i+=2才行啊
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:28 天
连续签到:3 天
 楼主| 发表于 2017-10-10 12:32:54 | 显示全部楼层
铁棍阿童木 发表于 2017-10-10 12:31
你这程序能运行???

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

能运行,答案是:1,3,5,7,9,9  你可以运行试试
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:28 天
连续签到:3 天
 楼主| 发表于 2017-10-10 12:33:25 | 显示全部楼层
~风介~ 发表于 2017-10-10 08:42
把笔和纸拿出来画画,就很清楚了

纯粹混鱼币来的,哈哈
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:28 天
连续签到:3 天
 楼主| 发表于 2017-10-10 12:34:16 | 显示全部楼层
zata 发表于 2017-10-10 08:45
最后那个print(i) 都不在循环内

我已经明白了,谢谢。哈哈
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
6 
累计签到:41 天
连续签到:37 天
发表于 2017-10-10 12:36:00 | 显示全部楼层
唱离歌的老鼠 发表于 2017-10-10 12:32
能运行,答案是:1,3,5,7,9,9  你可以运行试试

加个else:让程序完整性更好。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
480 
累计签到:133 天
连续签到:130 天
发表于 2017-10-10 14:45:00 | 显示全部楼层
continue 退出本次循环继续下一循环, continue后面如果还有语句将不会被执行。

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
9 

尚未签到

发表于 2017-10-10 15:02:22 | 显示全部楼层
continue是当执行到这个命令时,不执行continue后面的语句,直接结束当次循环进入下一次循环。就相当于到了这里循环次数就加1.重新开始执行循环体
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
3 
累计签到:14 天
连续签到:3 天
发表于 2017-10-10 16:00:08 | 显示全部楼层
自己运行程序看结果,再改代码再验证
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:4 天
连续签到:1 天
发表于 前天 23:17 | 显示全部楼层
我是买了小甲鱼的书,看到本章节的,这个也让我很迷惑,所以搜到了本贴,,,各位大神的回复也让我很迷惑,后来我添加了几句话就把整个流程了解了..希望对大家有帮助
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
>>>
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-10-19 20:38 Powered by Discuz! X2.5 Theme by dreambred

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