Python 中使用 forwhile 循环打印杨辉三角练习(列表索引练习)。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 中使用 forwhile 循环打印杨辉三角练习(列表索引练习)。相关的知识,希望对你有一定的参考价值。
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]]
以上是关于Python 中使用 forwhile 循环打印杨辉三角练习(列表索引练习)。的主要内容,如果未能解决你的问题,请参考以下文章