日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 中使用 for、while 循环打印杨辉三角练习(列表索引练习)。

發(fā)布時間:2024/9/21 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 中使用 for、while 循环打印杨辉三角练习(列表索引练习)。 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Python中使用for while循環(huán)打印楊輝三角練習(列表索引練習)。

楊輝三角是一個由數(shù)字排列成的三角形數(shù)表,一般形式如下:?

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?

.......................

楊輝三角最本質的特征是,它的兩條斜邊都是由數(shù)字1組成的,而其余的數(shù)則是等于它肩上的兩個數(shù)之和。


方法一:


? ? __author__ = 'Brad'

? ? n = int(input('請輸入你想打印楊輝三角的行數(shù):')

? ? newline = [1] ??

? ? oldline = [] ? ?

? ? print(newline) ?

? ??

? ? for i in range(1,n): ? ?

? ? ? ? oldline = new.copy() ? ?

? ? ? ? oldline.append(0)

? ? ? ? newline.clear()

? ? ? ? for j in range(i+1):

? ? ? ? ? ? newline.append(oldline[j-1]+oldline[j])

? ? ? ? print(newline)

? ? ? ??

? ? ? ??





楊輝三角的特征:第n行有n個元素,從第三行起,newline[1]=oldline[0]+oldine[1]……楊輝三角可以在右側擴展出一列全部為0,這樣從第二行開始,newline[0]=oldline[-1]+oldline[0],并且newline[0]也可由oldline的元素計算得出。


? ? ?1 0

? ? ?1 1 0

? ? ?1 2 1 0

? ? ?1 3 3 1 0

? ? ?1 4 6 4 1 0

? ? ?1 5 10 10 5 1 0

? ? ?1 6 15 20 15 6 1 0

? ? ?

#第一行的列表需要直接打印

#這個newline是經過計算

#通過對這個oldline的元素進行計算得出newline中的元素

#剩余n-1行,通過循環(huán)n-1次分別打印經計算出的newline,所以區(qū)間設為(1,n)

開始計算第二行,將第一行copy給oldline,用于計算。

oldline列表添加一個0,成為我們想要的楊輝三角變形。

做一個空行newline,里面的元素通過計算得出

oldline[0]+oldline[1],oldline[0]+oldline[1]索引順序重復不好處理,可以嘗試使用負索引oldline[-1]+oldline[0],oldline[0]+oldline[1]正好得出第二行的元素:[1,1],這時嘗試將j的區(qū)間設為[0,1]即[i+1]

后面逐行也都符合要求。

結果為:


? ? :6

? ? [1]

? ? [1, 1]

? ? [1, 2, 1]

? ? [1, 3, 3, 1]

? ? [1, 4, 6, 4, 1]

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


方法二:


楊輝三角從第三行開始,triangle[1]到triangle[n-1]都可以由上一行的元素計算得出。




? ? __author__ = 'Brad'

? ? n = int(input('請輸入你想打印楊輝三角的行數(shù):')

? ? triangle=[[1],[1,1]]

? ??

? ? for i in range(2,n):

? ? ? ? pre=triangle[i-1]

? ? ? ? cur=[1]

? ? ? ? for j in range(i-1):

? ? ? ? ? ? cur.append(pre[j]+pre[j+1])

? ? ? ? cur.append(1)

? ? ? ? triangle.append(cur)

? ? print(triangle)


triangle[0]和triangle[n-1]不計算,分別在第一個循環(huán)首尾定義和增加,只計算剩余的元素,將每一行的元素添加為triangle的元素,作為下一行cur計算的pre。

前兩行不方便計算,直接列出。從第三行開始計算,i = 2 pre=tirangle[1],cur[1]=1+1即pre[0]+pre[1],所以將j的區(qū)間設置為(i-1),接下來計算順利,直接打印即為楊輝三角。

結果為:


? ? :6

? ? [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]]


方法三:


? ? ? ? __author__ = 'Brad'

? ? n = int(input('請輸入你想打印楊輝三角的行數(shù):')

? ? triangle=[]

? ??

? ? for i in range(n):

? ? ? ? row=[1]

? ? ? ? triangle.append(row)

? ? ? ? if i==0:

? ? ? ? ? ? continue

? ? ? ? for j in range(i-1):

? ? ? ? ? ? row.append(triangle[i-1][j]+triangle[i-1][j+1])

? ? ? ? row.append(1)

? ? print(triangle)

? ??

在這個方法中row相當于方法二中的cur,每次計算初始都是[1].


當i==0時,triangle再添加[1]變?yōu)閇[1],[1]],


當i==2時,row[1]增加triangle[1][0]+triangle[1][0],然后再增加[1],變?yōu)閇[1],[2],[1]。

然后依次打印。結果為:


? ? :6

? ? [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]]


轉載于:https://blog.51cto.com/13320196/1968250

總結

以上是生活随笔為你收集整理的Python 中使用 for、while 循环打印杨辉三角练习(列表索引练习)。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。