用Python3生成杨辉三角

1. 函数方式

def main(n):
    if not (isinstance(n, int) and n > 0):
        raise TypeError ('Please throw me a positive integer')
    counter = 0
    p = [1]
    while True:
        print(p)
        counter += 1
        if counter == n:
            break
        p = [1] + [p[ele] + p[ele + 1] for ele in range(len(p) - 1)] + [1]

2. 生成器方式 (含位置参数,将上方的函数方式中的print语句改为yield即可。)

def main(n):
    if not (isinstance(n, int) and n > 0):
        raise TypeError ('Please throw me a positive integer')
    counter = 0
    p = [1]
    while True:
        yield p
        counter += 1
        if counter == n:
            break
        p = [1] + [p[ele] + p[ele + 1] for ele in range(len(p) - 1)] + [1]

3. 生成器方式(不含位置参数,每次执行next命令就生成下一行。)

def main():
    p = [1]
    while True:
        yield p
        p = [1] + [p[ele] + p[ele + 1] for ele in range(len(p)-1)] + [1]

 

你可能感兴趣的:(python)