Python 中使用 for、while 循环打印杨辉三角练习(列表索引练习)。
Python中使用for while循環打印楊輝三角練習(列表索引練習)。
楊輝三角是一個由數字排列成的三角形數表,一般形式如下:?
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組成的,而其余的數則是等于它肩上的兩個數之和。
方法一:
? ? __author__ = 'Brad'
? ? n = int(input('請輸入你想打印楊輝三角的行數:')
? ? 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行,通過循環n-1次分別打印經計算出的newline,所以區間設為(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的區間設為[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('請輸入你想打印楊輝三角的行數:')
? ? 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]不計算,分別在第一個循環首尾定義和增加,只計算剩余的元素,將每一行的元素添加為triangle的元素,作為下一行cur計算的pre。
前兩行不方便計算,直接列出。從第三行開始計算,i = 2 pre=tirangle[1],cur[1]=1+1即pre[0]+pre[1],所以將j的區間設置為(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('請輸入你想打印楊輝三角的行數:')
? ? 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]變為[[1],[1]],
當i==2時,row[1]增加triangle[1][0]+triangle[1][0],然后再增加[1],變為[[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 循环打印杨辉三角练习(列表索引练习)。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java消息系统介绍
- 下一篇: linux 挂载ISO文件以及yum源配