bailean 发表于 2020-4-4 18:15:16

关于range

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

看不懂最后结果,能给解释下吗,谢谢啦

dlnb526 发表于 2020-4-4 18:21:40

for i in range(10):   对于1到10中数循环取为i
    if i % 2 != 0:如果 i%2 不为零
      print(i)    打印,
      continue继续循环
    i += 2当前i递增2
    print(i)打印i,然后回到第一步从下一个i开始

_荟桐_ 发表于 2020-4-4 18:24:31

for i in range(10):# 把0-9的值依次赋值给i
    if i % 2 != 0:    # 如果i除以二的余数不为0(是奇数)
      print(i)             #打印i
      continue         #继续循环(不执行contiue以后的代码)
    i += 2             #如果i是偶数给i+2(不影响下一次循环时 i 的值)
    print(i)            #打印i

就是依次计算0-9内的数,
如果是奇数,直接打印出来
如果是偶数,加二在打印

阿思 发表于 2020-4-4 18:25:33

for i in range(10):#这一行是for循环,i从0每次自增1到9
i=0,判断if条件,0对2求余结果为0,条件为假,执行与if并列的语句i=i+2,打印2
i自增1,i=1,判断if条件,结果为真,执行if后面的语句,打印1,并通过continue跳出此次循环
i又自增1,i=2.判断if条件,结果为假,执行与if缩进一致的并列语句,故打印4
依此类推。。。。。
主要注意缩进关系,求余条件的判断和continue的跳出本次循环不执行后面的重开一次循环

heidern0612 发表于 2020-4-4 18:34:26

if i % 2 != 0等于 什么数字除2后余数不等于0?

能除2余数为零的肯定是偶数,所以只有奇数满足除2余数不为零。

假如是奇数的话,就继续(continue)下次循环,本次什么都不做。

所以不满足if的肯定是奇数,奇数往上2个2个加,加的也都是奇数。

最后把奇数打印出来。

sunrise085 发表于 2020-4-4 18:35:01

三楼解释的非常对,
我补充一点点
for range循环,在开始的时候,就会生成迭代遍历序列,
在循环执行过程中,修改i的值不影响迭代遍历序列。
range()有三个参数,以逗号隔开,第一个参数和第三个参数都有默认值,第一个参数是起始位置默认值为0,第三个参数是步长默认值为1。range(m,n,l)就是从m到n(不包含n)步长为l的序列

zltzlt 发表于 2020-4-4 20:00:38

for i in range(10):
    if i % 2 != 0:    # 如果 i 是奇数(除以 2 的余数不为 0)
      print(i)      # 打印 i 的值
      continue      # 继续循环
    i += 2            # 将 i 加 2(此处并不影响 for 循环中的 i 的值,因为 for 循环会自动重置 i)
    print(i)          # 把 i 加 2 后的结果打印出来

雨留下的印记 发表于 2020-4-4 20:10:07

本帖最后由 雨留下的印记 于 2020-4-4 20:11 编辑

for i in range(10):
    if i % 2 != 0:
      print(i)
      continue
    i += 2
    print(i)
i从0~9
i = 0时,0%2 = 0,不会进入if语句,直接进入 i += 2 ,输出的结果是2
然后 i=11%2!= 0,进入if语句,输出结果1
以此类推 i=2    输出结果4
i = 3 输出结果3
这个函数就是把0~9的奇数直接输出,偶数+2输出

天假之名 发表于 2020-4-5 09:50:04

从0-9依次判断余数是否为零
不为零就打印,然后继续循环
其他的就加2,再打印

bailean 发表于 2020-4-5 19:00:07

谢谢大家,我懂啦
页: [1]
查看完整版本: 关于range