今天在學習到廖雪峰教程例中的楊輝三角的時候,很是廢了一番腦筋。看了下網上的例項,結合自己的情況,發現思路卡死的原因。
因為是過來的,對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...