python輸出楊輝三角(含解析)

2021-10-07 11:54:35 字數 1651 閱讀 3241

首先楊輝三角長這個樣子

首先來看**部分

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 很顯...