注册 登录
编程论坛 Python论坛

急!!!请教一下这代码什么意思 在线等!!!

copperLP 发布于 2012-11-06 19:43, 1455 次点击
请问一下这段代码
def q3m():
  c=4
  d=2
  for a in range(c):
    for b in range(0,c,d):
      print a
    print b

为什么会得出这个结果:

0
0
2
1
1
2
2
2
2
3
3
2

就是不明白为什么会得出这样的结果 不知道这些数字是怎么出来的 为什么这些数字有不同显示数量 希望有人给解释下 谢谢了!!!!!在线等啊!!!
9 回复
#2
木头lbj2012-11-06 20:06
这里有两个for循环,第一个
for a in range(c):
其实是for a in [0,1,2,3]这样的话,里面的for循环会执行4次,而a的值分别为0,1,2,3.

第二个循环
for b in range(0,c,d):
其实是
for b in [0,2]
,因为
range(0,c,d)
range(0,4,2)
,2是步长,这时b分别为0,2.而由于里面的一个for循环不输出b,所以里面的b值没有作用,这里的range的作用是保持里面的a输出两次。而每次里面的for循环执行完后b都为2,这是在外面的循环输出。

所以这样的话,会分别依次输a,a,2(b经过range(0,c,d)语句后的值)。所以会是002 112 222 332
这里要理解for循环和range的作用。
不知能理解否。
#3
copperLP2012-11-06 20:13
回复 2楼 木头lbj
大概明白点 再仔细揣摩揣摩 灰常感谢!!!
#4
copperLP2012-11-06 20:17
回复 2楼 木头lbj
再请问一下 为什么“这里的range的作用是保持里面的a输出两次”?
#5
木头lbj2012-11-06 20:20
回复 4楼 copperLP
range(0,4,2)是[0,2],
for a in [0,2]会执行两次啊,一次是a=0,一次是a=2.
你可以在内循环中加一个print a
看看效果
#6
copperLP2012-11-06 20:31
回复 5楼 木头lbj
哦了!这个明白了 还有点疑问 就是为什么“每次里面的for循环执行完后b都为2”,在这里2不是当做a的循环两遍了么,那为什么每次最后都还有个2,是不是这个2在外循环里就是其他含义了?
#7
木头lbj2012-11-06 20:41
回复 6楼 copperLP
里面每次循环的时,都对b进行赋值了呀,一次赋值0,一次2,但是你在内层for循环没有输出b啊,而每次跳出内层for循环的时候都是b=2啊
所以在外面输出的时候就会都是2
#8
copperLP2012-11-06 21:08
回复 7楼 木头lbj
哦哦 明白了 灰常感谢!!!
#9
快乐出发02202012-11-08 23:54
正解啊。。。
#10
木头lbj2012-11-15 19:19
擦  我讲半天 打这么多字才给10分    9楼就三个字也得10分    以后知道什么都不告诉你    妹的
1