python杨辉三角的两种书写方式

第一种(设置二维列表设置每个元素为0进行替换元素)

代码演示:

n = eval(input("请输入想要的行数"))
lst=[[0 for j in range(n)] for i in range(n)]
# lst2=[[0]*n]*n
for i in range(n):
    for j in range(i+1):
        if j==0 or j==i:
            lst[i][j]=1
        else:
            lst[i][j]=lst[i-1][j-1]+lst[i-1][j]
        print(lst[i][j],end=" ")#按直角三角形进行输出
    print()

for i in range(n):    #按等边三角形输出
    s = " " * (n - i - 1)
    for j in lst[i]:
        if j!=0:
            s = s + str(j) + " "
    print(s)

演示结果:

请输入想要的行数7

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

第二种(计算出每一行,得到完整二维列表后进行输出)

代码演示

#给出n,输出前n行的杨辉三角
n = eval(input("请输入想要的行数"))
lst = [[1],[1,1]]
for i in range(2,n):   #已经给出前两行,求剩余行
    lst1 = lst[i-1]    #上一行
    print(lst1)
    first = [1]        #定义每一行第一个数
    # print(first)
    for j in range(i-1):   #算几次
        first.append(lst1[j]+lst1[j+1])   #每个数字等于上行的左右两个数字之和
    first.append(1)                       #每行最后一个数字
    lst.append(first)
print("普通输出:{}".format(lst))
for i in range(n):    #按等边三角形输出
    s = " " * (n - i - 1)
    for j in lst[i]:
        s = s + str(j) + " "
    print(s)

演示结果

请输入想要的行数7
      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 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值