首先楊輝三角長這個樣子
首先來看**部分
deft(
):
n=[1
]while
true
:yield n
n=[1
]+[n[i]
+n[i+1]
for i in
range
(len
(n)-1)
]+[1
]
t1=t()r=
a=1for x in t1:
a=a+
1if a==11:
break
for y in r:
print
(y)
接下來是對這個**的解析
generator(生成器)和函式的執行流程不一樣。函式是順序執行,遇到return語句或者最後一行函式語句就返回。而變成generator的函式,在每次呼叫next()的時候執行,遇到yield語句返回,再次執行時從上次返回的yield語句處繼續執行。這裡的楊輝三角**其實就是乙個生成器,而yield的作用就是惰性生成一行楊輝三角並且輸出,對於生成器需要呼叫next()時,才會繼續執行語句。但是實際操作過程中,我們通常用for迴圈來代替next(),讓生成器不斷生成下一行。
然後來看def t()的具體過程
deft(
):
n=[1
]#這是n的初始值,也是楊輝三角的第一行
while
true
:yield n #返回這次生成的這一行楊輝三角
n=[1
]+[n[i]
+n[i+1]
for i in
range
(len
(n)-1)
]+[1
]#當楊輝三角只有一行,也就是n=[1]的時候,len(n)=1
此時迴圈就是for i in
range(0
),我們可以寫一段**
for n in
range(0
):print
(n) 會發現不會輸出任何東西
所以這裡,n是[1]
+[1],也就是楊輝三角的第二行
經過迴圈,再次由yield返回後,來到楊輝三角的第三行
可以發現迴圈變成下面這樣
for n in
range(1
):print
(a[n]
)print
(a[n+1]
) 結果是輸出兩個1,相加之後就變成了2,再加上開頭結尾的[
1],就變成了[1,
2,1]
也就是楊輝三角的第三行
最後借助
for y in r:
print(y)
把r中的每一行列印出來,結果如下:
輸出楊輝三角
程式的版權和版本宣告部分 檔名稱 fibnacci.cpp 作 者 單虹毓 完成日期 2013 年 12 月 4 日 版本號 v1.0 輸入描述 無 問題描述 楊輝三角 程式輸出 1 第0列和對角線上的元素都為1。程式輸出 2 除第0列和對角線上的元素以外,其它元素的值均為前一行上的同列元素和前一列...
python楊輝三角 楊輝三角I II
給定乙個非負整數 numrows,生成楊輝三角的前 numrows 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 5 輸出 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 可以一行一行錯位加,當然這裡提供更簡便的方法。任取一行描述 1,2,1 如何得到 1,3,3,1 ...
Python 楊輝三角
首先附上我們需要求得的楊輝三角 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 很顯...