杨辉三角(Python) 您所在的位置:网站首页 用python输出金字塔杨辉三角 杨辉三角(Python)

杨辉三角(Python)

2023-11-19 20:28| 来源: 网络整理| 查看: 265

杨辉三角性质:

每行首位数字都是1每行中间的各项数字都是它肩上两个数字的和第n行的数字有n个第n行的项数总比第n-1行多一个

 解题思路:

input来读取用户输入的行数。创建两个列表list1和list2,list1用于存放最后的结果(结果是二维列表),list2用于存放每一行的数字。根据性质输出结果,首尾是1,中间的各项数字都是它肩上两个数字的和.

打印前两行:

num=int(input("请输入您需要打印的杨辉三角的层数:")) list1=[] for i in range(num): list2=[] if i==0: list2=[1] elif i==1: list2=[1,1] else: pass list1.append(list2) print(list1)

在if和elif条件判断中,但i等于0或1即第一层和第二层时直接打印;然后每判断一个判断后,都会将list2添加到list1中.

请输入您需要打印的杨辉三角的层数:2 [[1], [1, 1]] 请输入您需要打印的杨辉三角的层数:5 [[1], [1, 1], [], [], []]

打印num行:

num=int(input("请输入您需要打印的杨辉三角的层数:")) list1=[] for i in range(num): list2=[] if i==0: list2=[1] elif i==1: list2=[1,1] else: for j in range(i+1): if j==0 or j==i: list2.append(1) else: list2.append(list1[i-1][j-1]+list1[i-1][j]) list1.append(list2)#每存一行的数据(每执行一次判断后),便添加到list1 print(list1)

 在else判断中(打印其他层)创建一个for循环,变量j是为了这一层里面的各个元素,或者说j的索引范围,而这也就是参数i+1的原因.好吧我知道你不理解,假设此时需要打印第四层,i即=3,而且第四层的元素有4个,在列表中的索引值j为0,1,2,3。而i的索引范围却只有0,1,2,因此i+1的目的就是为了匹配j的索引.

在循环中的if判断,当j的取值等于0或i时,即这一层的列表的第一个或最后一个时,将1添加到list2中(参考性质1);在else判断中,将上一层即i-1中的元素取出相加(参考性质2)。

好吧,我知道你还是没有看明白,换个说法:

为什么是i-1:因为i-1是这一层的上一层;假设当前是第3层,则i=2,那么上一层就是i=1即第2层.但是存放第三层杨辉三角的列表是[[1],[1,1],[  ]].而我们要先获取上一层即第二层,即i=1即(i-1)的数据(list1[1])

# 假设当前是第4层,则i=3, 但是列表是[[1], [1, 1], [1,2,1],[  ]].而我们要先获取上一层即第三层, 即i=2j即(i-1)的数据(list1[2]),以此类推

为什么是j-1:此时这个索引是为了获得一层中的各个元素值,而j的定义就是用来表示这一行里面的各个元素值!假设当前是第3层,j的取值范围是0,1,2;此时列表为[[1], [1, 1], [1,2,1]]; 要索引[1,1],但是这索引的这个列表范围是0,1,而刚好要索引的列表范围比j的范围小1

# 假设当前是第4层,j的取值范围是0,1,2,3;此时列表为[[1], [1, 1], [1,2,1],[1,3,3,1]];要索引[1,2,1],但是这索引的这个列表范围是0,1,2;而且第四中的list2中的第一个元素3是第三层的第1个元素(list1[2][0])和第二个元素(list1[2][1])相加而得,以此类推!

#list1(二维列表) [[1] 第一层(i=0) [1, 1] 第二层(i=1) [1, 2, 1] 第三层(i=2,j=0,1,2) [1, 3, 3, 1] 第四层(i=3,j=0,1,2,3) [1, 4, 6, 4, 1]] 第五层(i=4,j=0,1,2,3,4) 请输入您需要打印的杨辉三角的层数:4 [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]] 请输入您需要打印的杨辉三角的层数:6 [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]]

 打印杨辉三角(直角三角形):       

for i in list1: #print(i) for j in i: print("{:


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有