專案2 楊輝三角 python實現

2021-08-21 14:28:47 字數 2254 閱讀 6261

題目 :楊輝三角定義如下: 

1 1 1 

1 2 1 

1 3 3 1 

1 4 6 4 1 

1 5 10 10 5 1 

把每一行看作乙個list,試寫乙個 generator,不斷輸出下一行的list。 

期待輸出: 

[1] 

[1, 1] 

[1, 2, 1] 

[1, 3, 3, 1] 

[1, 4, 6, 4. 1] 

[1, 5, 10, 10, 5, 1] 

本文也是在看過廖雪峰教程生成器楊輝三角時,開始自己梳理程式和思路,附上鏈結

python3.5  環境下編譯:注意縮排!!! 

# -*- coding: utf-8 -*-

def ********s():

n=[1]

while true:

yield n        #generator函式與普通函式的差別:在執行過程中,遇到yield就中斷,下次又繼續執行

n=[1]+[n[i] + n[i+1] for i in range(len(n)-1)]+[1] #寫法

if __name__ == '__main__':

n=0for t in ********s():

print(t)

n=n+1

if n == 10:

break

#結果:

[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]

#解析整個流程

#按照一行乙個數列(list)實現的,也就是說,我們得在程式中不斷的返回每一行的list並且列印出來

#楊輝三角形規律 在廖雪峰的鏈結中已經說的很明白了,

#列表頭尾是[1],每乙個新的list中間的部分,都等於上一行list的:第0個元素+第1個元素,第1個元素+第2個元素,第2個元素+第3#個元素,.......一直迭代。即:[1] +[p[0]+p[1]]+[p[1]+p[2]].....+[1]

#函式********()生成的實際上是乙個每個元素都為list的list  即list的巢狀

#由yield n可知,yield 的作用就是把乙個函式變成乙個 generator生成器,此生成器每次生成的是n

#********的第0個元素是初始化的n=[1]

#計算********的第1個元素時,即第一次執行n=[1]+[n[i] + n[i+1] for i in range(len(n)-1)]+[1],第乙個和最後乙個預設為[1],中間#是乙個列表生成式

#首先看列生成式中的for迴圈,此時len(n)=1(因為此時n=[1],只有乙個元素),所以range(len(n)-1)]=range(0),即空list,所以沒#有i

#所以中間的列表生成式為空  ********的第1個元素為n=[1,1]

#計算********的第2個元素時,即第二次執行n=[1]+[n[i] + n[i+1] for i in range(len(n)-1)]+[1],第乙個和最後乙個預設為[1],中間#是乙個列表生成式

#列表生成式中的for迴圈,此時(因為此時n=[1,1],2個元素),(len(n)-1=2-1=1,所以range(len(n)-1)]=range(1)=[0]

#i=0時,列表生成式生成n[0] + n[0+1]=1+1=2  

#所以n=[1,2,1]

#……以此類推,計算********的第3個元素時,range(len(n-1)]=range(2)=[0,1]

#i=0時,列表生成式生成n[0] + n[0+1]=1+2=3 ;i=1時,列表生成式生成n[1] + n[1+1]=2+1=3 

#所以n=[1,3,3,1]

#最後if __name__ == '__main__'的意思是:當.py檔案被直接執行時,if __name__ == '__main__'之下的**塊將被執行;

#當.py檔案以模組形式被匯入時,if __name__ == '__main__'之下的**塊不被執行。即執行主程式是執行,被呼叫是不被執行

楊輝三角 python實現

楊輝三角python實現 generator toc 本人在學習廖雪峰老師的python教程時,遇見練習題 因此得到如下解 計算楊輝三角 def yh m n 0 while n m if n 0 n n 1 yield 1 if n 1 l 1,1 yield l n n 1 l.insert 0...

Python實現楊輝三角

楊輝三角,是二項式係數在三角形中的一種幾何排列。在歐洲,這個表叫做帕斯卡三角形。帕斯卡 1623 1662 是在1654年發現這一規律的,比楊輝要遲393年,比賈憲遲600年。楊輝三角是中國古代數學的傑出研究成果之一,它把二項式係數圖形化,把組合數內在的一些代數性質直觀地從圖形中體現出來,是一種離散...

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