python-楊輝三角
阿新 • • 發佈:2021-06-22
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)