我的作业
Topic source您好,我有点不是很能明白if和break语句这块。我的理解是:满足if条件相当于L的最后一个元素是1,然后这时候再给N的最末加1,之后N.append(...)是再给N的末尾加其他元素,那不是不符合序列要求了吗?抓耳挠腮好久了,想向您请教一下(˶‾᷄ ⁻̫ ‾᷅˵)
主要是理解for i, value in enumerate(L)
第一次调用到yield结束,这时L=[1]
第二次调用是从yield结束的地方开始L=[1],然后进循环,先不管N,这时enumerate的作用是取出下标赋给i=0,值赋给value=1
进入判断if(i==len(L)-1 and value==1):
(i = (len(L)=1) - 1= 0) and value=value=1成立 N.append(1)在这时N=[1,1] break 跳出循环
L=N=[1,1]
打印L
第三次调用从while里面的yield开始L=[1,1],这时enumerate取出下标赋给i=0,值赋给value=1
进入判断if(i==len(L)-1 and value==1): 注意这是后L的长度是2
(i = (len(L)=2) - 1 != 0) and value=value=1条件不成立,执行N.append(L[i=0]=1+L[(i=0)+1]=1) 就是N.append(2)这时候N=[1,2]注意没有跳出for循环!
for第二次取值,这时enumerate取出下标赋给i=1,值赋给value=1
进入判断if(i==len(L)-1 and value==1):
(i = (len(L)=2) - 1= 1) and value=value=1成立 N.append(1)在这时N=[1,2,1] break 跳出循环
L=N=[1,2,1]
打印L
除了第一次调用没进while,后面的调用都是在while里面执行。
- 1
babeCoral珊