算法——帕斯卡三角

帕斯卡三角(Psacal's Triangle)

# 帕斯卡三角(Pascal's Triangle)
def triangle(rows: int):
    tri = []
    for row in range(1, rows+1):
        new_row = []
        for item in range(row):
            new_row.append(1)
        tri.append(new_row)
    for row in range(1, len(tri)-1):
        for index in range(len(tri[row+1])):
            if index == 0 or index == -1:
                continue
            try:
                tri[row+1][index] = tri[row][index-1] + tri[row][index]
            except:
                pass
    return tri


if __name__ == '__main__':
    rows = 10
    length = rows * 3
    count = 1
    for row in triangle(rows):
        print(' ' * ((length-count*3)//2), row, sep='')
        count += 1

 

 

# 另一种打印方式(更好的打印方法,如果使用第一种打印方法来打印20行的帕斯卡三角形的话误差会比较大)

 

# 帕斯卡三角(Pascal's Triangle)
def triangle(rows: int):
    tri = []
    for row in range(1, rows+1):
        new_row = []
        for item in range(row):
            new_row.append(1)
        tri.append(new_row)
    for row in range(1, len(tri)-1):
        for index in range(len(tri[row+1])):
            if index == 0 or index == -1:
                continue
            try:
                tri[row+1][index] = tri[row][index-1] + tri[row][index]
            except:
                pass
    return tri


if __name__ == '__main__':
    rows = 10
    count = 1
    length = 0
    for i in triangle(rows)[-1]:
        length += len(str(i)) + 2
    for row in triangle(rows): 
        row_length = 0
        for i in row:
            row_length += len(str(i)) + 2
        print(' ' * ((length-row_length)//2), row, sep='')
        count += 1

 

 

# 20行效果图

转载于:https://www.cnblogs.com/noonjuan/p/10993387.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值