鱼C论坛

 找回密码
 立即注册
查看: 601|回复: 3

[已解决]想不懂为啥会这样?

[复制链接]
发表于 2020-6-4 11:43:21 | 显示全部楼层 |阅读模式

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

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

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

输出答案:
2
1
4
3
6
5
8
7
10
9

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

对于这部分代码我能理解,就是求余数,但是
continue
    i +=2
    print(i)
这部分代码我就懵逼了,请大神为我解答下,谢谢。
最佳答案
2020-6-4 22:00:45
本帖最后由 _荟桐_ 于 2020-6-4 22:02 编辑
for i in range(10):
    if i%2 != 0:        # 如果i是奇数
        print(i)               # 打印i
        continue             # 继续遍历下一个数字,也就是不执行后边的代码
    i +=2                # 如果i是偶数,就 i += 2
    print(i)              # 然后打印出来(i+2)

# 总结:
# 奇数直接打印
# 偶数则要+2后打印

所以结果就是
0+2
1
2+2
3
4+2
5
6+2
7
8+2
9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-4 19:22:42 | 显示全部楼层
本帖最后由 BIO-张磊 于 2020-6-4 19:24 编辑

我来模拟下,代码执行过程
i = 0, i % 2 = 0 ,i + 2 = 2,print(i) ->2 , i = i +1
i = 1, i %2 != 0,print(i) -> 1, continue,  i = i+1
i = 2, i % 2= 0,i + 2 = 4,print(i) -> 4, i = i +1
........
所以一旦执行continue,for循环内continue下面不执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 20:43:01 | 显示全部楼层
结果没毛病啊,
0%2=0,0+2=2,所以第一项为2
1%2 != 0 ,直接输出1
以此类推,continue后面的一样可以执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 22:00:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 _荟桐_ 于 2020-6-4 22:02 编辑
for i in range(10):
    if i%2 != 0:        # 如果i是奇数
        print(i)               # 打印i
        continue             # 继续遍历下一个数字,也就是不执行后边的代码
    i +=2                # 如果i是偶数,就 i += 2
    print(i)              # 然后打印出来(i+2)

# 总结:
# 奇数直接打印
# 偶数则要+2后打印

所以结果就是
0+2
1
2+2
3
4+2
5
6+2
7
8+2
9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 21:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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