1. 程式人生 > 其它 >python-楊輝三角

python-楊輝三角

 1 def yang(num):
 2     Ylist = [] #動態存放每一行的數
 3     for i in range(num): #需要幾行就遍歷幾次
 4         if len(Ylist) > 1: #有2個元素以上即可進行加操作
 5             ylist = Ylist[:] #複製切片
 6             for j in range(1, len(ylist)): #從切片的第二個元素開始
 7                 Ylist[j] = ylist[j-1] + ylist[j] #和它前一個元素相加賦值給原列表的同索引元素
8 Ylist.append(1) #任何一行最後都是1,每次遍歷都加上1 9 print(Ylist) 10 11 if __name__ == '__main__': 12 yang(4)

說起楊輝三角,大家一定會想到二項式定理,那麼如何通過程式碼的方式來輸出它呢?

其實它的係數是有規律可循的。第n行的第n項實際是等於上一行的第n-1項與第n項的和。

由此我們可以寫一個函式,這個函式需要一個入參num,表示前n行,函式的目的是列印楊輝三角的前n行

def yang(num):

由於每行的係數都與上一行有關,所以需要定義一個空的list來存放每一行的係數

Ylist = [] 

要列印前n行,就需要遍歷每一行,一共有n行,所以要遍歷n次

for i in range(num):

無論是哪一行,最後都有一個1,所以以此為出發點,我們可以在列表的最後都進行追加元素1的操作

當行數num為1時,它是第一行,沒有上一行,沒有元素,所以直接追加一個1即可

當行數num為2時,它的上一行只有一個元素,無法滿足求和條件,所以依舊是對列表追加一個1

Ylist.append(1)

當行數num>2時,它的上一行都至少有2個元素,滿足了求和要求,所以當列表元素長度大於1時,開始求和

if len(Ylist) > 1:

開始求和前,如果直接對列表Ylist進行操作,會導致列表資料錯亂,求和計算錯誤,所以要先複製列表切片,複製後的ylist作為上一行的係數

ylist = Ylist[:]

有了上一行的資料ylist,就可以開始取資料進行求和了,如果用第n項+第n-1項的方式,就可以直接從列表的第二項開始遍歷

for j in range(1, len(ylist)):

從第2項開始,將ylist的每一項和它的前一項進行求和,然後賦值給當前行的第n項

Ylist[j] = ylist[j-1] + ylist[j]

求和並賦值後,Ylist最後再追加一個1,並列印該行

print(Ylist)