哎呀,不好意思,看了楼上的答案,才照着做出来的呢,分享一下错误,总之,满满的自卑感,感觉自己太笨太笨了呀
Topic source输出写错了,输出是:[[1, 1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1], [1, 6, 15, 20, 15, 6, 1], [1, 7, 21, 35, 35, 21, 7, 1], [1, 8, 28, 56, 70, 56, 28, 8, 1], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]]
上次代码出现的问题,现在已经解决。
问了一个我狠狠狠仰慕的大神。顺便把大神说给我的话分享一下。
def triangles():
n=0
M=[1]
L=[1]
while True:
yield(L)
n+=1
if n==1:
L=[1,1]
#L.append(1)
elif n>=2:
L=[1]
for i in range(1,n):
L.append(M[i-1]+M[i])
L.append(1)
M=L
#yield是L的一个引用,所以后续修改也会影响L的引用的值
#多看看相关的基础书,应该有帮助
#没有捷径吧,我也是一点点试错的经验得来这些结果的
#不过要是能仔细看书,应该会少走很多弯路吧
#python默认都是引用,浅拷贝,所以你要注意这个,有点坑
#除非你明确地指示深拷贝
#我是学生物的,然后说自己要学这学那,想学好多东西,结果大神说:"我觉得还是量力而行吧,能做好一件是一件吧"。
#但是不管怎样,我都会努力,哈哈哈,谢谢大神,一直那么那么麻烦你,真心说声谢谢
--小饭盆2018年2月3日19:16:57
- 1
严肃的笨小孩
正确答案: def triangles(): Y=[1] while True: M=[1] yield Y
错误答案:
def triangles(): n=0 M=[1] L=[1] while True:
yield(L) n+=1 if n==1: L.append(1) elif n>=2: L=[1] for i in range(1,n): L.append(M[i-1]+M[i]) L.append(1) M=L 错误在于:输出前两项为 [1,1] [1,1][1,1] 可是为什么不输出result,就和答案一样呢?真不知道哪里的问题。。。 哎,感觉笨死了,突然觉着自己智商有问题,呜呜