鱼C论坛

 找回密码
 立即注册
查看: 1348|回复: 8

continue循环语句

[复制链接]
发表于 2020-6-23 22:56:31 | 显示全部楼层 |阅读模式

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

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

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

请问这个是怎么运行的,range(10)表示的不是0,1,2,3,4,5,6,7,8,9这一列数吗,i是怎么取值的?i余2不等于0又是怎么理解呢?结果显示为什么是2,1,4,3,6,5,8,7,10,9这一串数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-23 22:59:58 | 显示全部楼层
借楼问下:
大佬们。。
>>> old = [1, 2, 3, 4, 5]
>>> new = old
>>> old = [6]
>>> print(new)

这不是在系统里生成了old的内存空间存放12345了吗,然后把new标签也指向old的这个内存,那old变成了6,为啥print(new)还是12345呀。
我试了sort,old变了ne'w确实也会跟着变呀。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-23 23:10:04 | 显示全部楼层
本帖最后由 Twilight6 于 2020-6-23 23:14 编辑


continue 的作用是终止本次循环,开始下次循环,所以当代码运行到这的时候,就不继续运行 continue 下面的代码了,而是重新开始新的循环

for 循环过程中 每次都会给 i 重新赋值,所以导致你在 for 循环中 对 i 进行增大是不会影响 for 循环的进行的

range(10)表示的不是0,1,2,3,4,5,6,7,8,9这一列数吗,i是怎么取值的?

单纯的 :
for i in range(10):
    print(i)
代码就是打印 :
0
1
2
3
4
5
6
7
8
9
而你这里的 for 循环里面条件不同,不是直接打印:
for i in range(10):
    if i % 2 != 0:
          print(i)
          continue
    i += 2
    print(i)
if i % 2 != 0 这段代码判断循环到的 i 的值是否能被 2 整除,如果不能被整除那么执行 if 里面的代码块

if 里面有 print 所以会打印出不能被 2 整除的值,然后执行到 continue 不在继续执行下面的代码 重新开始下个循环

而如果能被 2 整除那么就 不执行 if 里面的代码,而是执行
i += 2
print(i)
这里的 i 被 + 2 之后打印,这也是为什么打印的结果会那么乱序,但是每次for 循环重新开始时候 会重新给 i 赋值,所以这里的 i +2 并不会影响 for 循环的进行

结果显示为什么是2,1,4,3,6,5,8,7,10,9这一串数字

直接举例子吧:

当for开始时候 i = 0 ,进入for 循环内 进行判断 if 条件 i % 2 = 0 所以 条件不成立 不执行 if 里面的代码

那就执行 i += 2 和 print(i) ,导致结果位 i = 2  print(i) 打印了 2

然后 开始下一次循环 i = 1,判断 i % 2 = 1 所以不等于0 条件成立 进入 if

print(i) 直接打印此时的 i = 1 遇到 continue 开始下次循环  i = 3

依次循环打印的结果就是 :
2
1
4
3
6
5
8
7
10
9 

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

使用道具 举报

发表于 2020-6-23 23:10:44 | 显示全部楼层
本帖最后由 Twilight6 于 2020-6-23 23:14 编辑
lamupen 发表于 2020-6-23 22:59
借楼问下:
大佬们。。
>>> old = [1, 2, 3, 4, 5]


为什么不自己发求助帖呢?下次请自己发求助帖寻求帮助

前面 new = old 都是指 new 和 old 两个变量指向的是 同一个列表  [1, 2, 3, 4, 5]

可以这样理解,这两个都是列表  [1, 2, 3, 4, 5] 的别名

而你后来重新把 old = [6] old 别名 给了列表 [6] 那么 列表  [1, 2, 3, 4, 5]  就失去了 old 这个别名 只剩 new 这个别名

所以你打印 new 还是之前的列表

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

使用道具 举报

发表于 2020-6-23 23:21:05 | 显示全部楼层
Twilight6 发表于 2020-6-23 23:10
为什么不自己发求助帖呢?下次请自己发求助帖寻求帮助

前面 new = old 都是指 new 和 old 两个变量 ...

发不出来呀,一直提示我帖子不存在
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-23 23:32:54 | 显示全部楼层
lamupen 发表于 2020-6-23 23:21
发不出来呀,一直提示我帖子不存在

嗯  我说的这些能理解吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-23 23:42:37 | 显示全部楼层
Twilight6 发表于 2020-6-23 23:32
嗯  我说的这些能理解吗?

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

使用道具 举报

发表于 2020-6-23 23:45:04 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2020-6-24 15:16:58 | 显示全部楼层
lamupen 发表于 2020-6-23 22:59
借楼问下:
大佬们。。
>>> old = [1, 2, 3, 4, 5]

那么请问抛开这个例子, for 循环是怎样进行循环的呢,for循环中 i 的赋值是随机的吗,看您这个回答,i 值是按range(10)里的10,1,2,3,4,5,6,7,8,9 的顺序进行赋值循环的,for循环都是按一定顺序进行的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 11:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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