Python中楊輝三角的學習

2021-08-22 02:54:11 字數 1649 閱讀 2814

今天在學習到廖雪峰教程例中的楊輝三角的時候,很是廢了一番腦筋。看了下網上的例項,結合自己的情況,發現思路卡死的原因。

因為是過來的,對list和理解不夠,就特別容易卡死。

還有乙個錯誤是對練習題題目沒有理解透,要求是

n = 0

results =

for t in ********s():

print(t)

n = n + 1

if n == 10:

break

下輸出結果,也就是做乙個生成器

********s()
然後用上面的**將他輸出出來,而我開始的理解還是c的方式,就是乙個函式列印出所有行。理解錯了。

除了這兩點,其實就比較容易了。

列印出來的是個list,第一行乙個元素,定義 

l = [1]
第二行是2個,這裡要開始理解楊輝三角的規律了。每一行的第一列和最後一列是[1],最重要的是運算基數,這個是不變的。

所以可以先假定第二行是

l = [1] + [1]
來到第三行就可以看規律了

[1, 2, 1]
第三行開始,每一行的的第二個數開始是上乙個list的相鄰相加,加到最末位,也就是需要這個len(list) -1次運算

這裡就要用到列表生成式了。

[1]+[ l[i]+l[i+1] for i in range(len(l)-1)] + [1]
這個是這個題目最關鍵的乙個點了,len-1個數,0+1然後是1+2……

再返回去看第一行,第二行。

第一行可以單獨拿出來,可以不考慮。

第二行帶入到上面的生成式,len(l)-1=0,也就是直接跳出,也是成立的。

完整的寫下來就是

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

l = [1]

while true:

yield l

l = [1] + [l[i] + l[i+1] for i in range(len(l)-1)] + [1]

然後用驗證**

n = 0

results =

for t in ********s():

print(t)

n = n + 1

if n == 10:

break

if results == [

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

]: print('測試通過!')

else:

print('測試失敗!')

最後,感謝廖雪峰先生的無私奉獻!

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

楊輝三角 Python

給定乙個非負整數 numrows,生成楊輝三角的前 numrows 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 5 輸出 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 coding utf 8 usr bin env python author wowlnan gi...