700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python 中使用 for while 循环打印杨辉三角练习(列表索引练习)。

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

时间:2022-01-24 18:22:37

相关推荐

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。