杨辉三角第n行python实现

不知道怎么输出第n行,杨辉三角倒是建好了,第n行不知道咋输出


n=int(input())
mat=[[1 for i in range(n)] for i in range(n)]
for i in range(1,n):
    for j in range(1,i):
        mat[i][j]=mat[i-1][j-1]+mat[i-1][j]
for i in range(n):
    for j in range(i+1):
        print("%3d" %mat[i][j],end="")
    print()
n=int(input())
mat=[[1 for i in range(n)] for i in range(n)]
for i in range(1,n):
    for j in range(1,i):
        mat[i][j]=mat[i-1][j-1]+mat[i-1][j]
i = len(mat) - 1
for j in range(i+1):
    print("%3d" %mat[i][j],end="")
print()


n=int(input())
def yanghui(n):
    mat=[[1 for i in range(n)] for i in range(n)]
    for i in range(1,n):
        for j in range(1,i):
            mat[i][j]=mat[i-1][j-1]+mat[i-1][j]
    return mat[n - 1]
row = yanghui(n)
print(row)
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7529279
  • 这篇博客你也可以参考下:【python初学者日记】读入正整数n,输出斐波那切数列的第n项
  • 除此之外, 这篇博客: 【python初学者日记】读入正整数n,打印n行正金字塔,再打印n行倒金字塔中的 代码实现 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #读入正整数n,打印n行正金字塔,再打印n行倒金字塔
    #'''
    n=int(input("请输入正整数n:"))
    
    ##方法一
    #'''
    for i in range(1,n+1):
        for j in range(n-i):
            print(' ',end='')
        for k in range(2*i-1):
            if k<=i-1:
                print(k+1,end='')
            else:
                print(2*i-1-k,end='')
        print()
    
    for i in range(n-1,0,-1):
        print(' '*(n-i),end='')
        for k in range(1,i+1):
            print(k,end='')
        for m in range(i-1,0,-1):
            print(m,end='')
        print()
    #'''
    ##方法二
    #'''
    for i in range(1,n+1):
        
        print(' '*(n-i),end='')
        
        for j in range(1,i+1):
            print(j,end='')
        for k in range(i-1,0,-1):
            print(k,end='')       
        print()
        
    for i in range(1,n):
        print(' '*i,end='')
        for k in range(1,n-i+1):
            print(k,end='')
        for m in range(n-i-1,0,-1):
            print(m,end='')
        print()
    #'''
    ##方法三
    #'''
    for i in range(1,n+1):
        
        print(' '*(n-i),end='')
        
        for m in range(1,2*i):
            print(n-abs(m-n),end='')        
        print()
        
    for j in range(n-1,0,-1):
        print(' '*(n-j),end='')
        for p in range(1,2*j):
            print(n-abs(n-p),end='')
        print()
    #'''
    

    运行结果如下:
    在这里插入图片描述

  • 您还可以看一下 武沛齐-银角大王老师的彻底学会Python装饰器课程中的 装饰器优化支持n个参数小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    解决方案:

    首先,我们需要了解杨辉三角的规律。杨辉三角是一种数学上的三角形,它的每一行数值等于上一行数值移动一位后相邻的两个数之和。根据这个规律,我们可以使用递推的方式来生成杨辉三角的每一行。具体做法如下:

    def generate_triangle(n):
        if n < 1:
            return []
        triangle = [[1]]
        for i in range(1, n):
            row = [1] * (i + 1)
            for j in range(1, i):
                row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j]
            triangle.append(row)
        return triangle
    

    这个函数接受一个整数 n 作为参数,返回一个由 n 个列表组成的列表,表示杨辉三角的前 n 行。每个列表包含 i + 1 个元素,表示第 i 行的数值。

    接下来,我们需要输出第 n 行的数值。我们可以通过如下代码来实现:

    def generate_row(n):
        if n < 1:
            return []
        row = [1]
        for i in range(1, n):
            row.append(row[i - 1] * (n - i) // i)
        return row
    

    这个函数接受一个整数 n 作为参数,返回一个长度为 n 的列表,表示杨辉三角的第 n 行数值。具体实现方式是逐个计算每个数,每个数可以通过上一行的数值计算得到。

    最后,我们需要正确输出结果。可以通过如下代码实现:

    def print_row(row):
        print('[' + ', '.join(map(str, row)) + ']')
    

    这个函数接受一个列表作为参数,将列表按照格式输出。具体实现方式是使用 join 函数连接列表,并使用 map 函数将列表中的元素转换为字符串类型。

    完整代码如下:

    def generate_triangle(n):
        if n < 1:
            return []
        triangle = [[1]]
        for i in range(1, n):
            row = [1] * (i + 1)
            for j in range(1, i):
                row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j]
            triangle.append(row)
        return triangle
    
    def generate_row(n):
        if n < 1:
            return []
        row = [1]
        for i in range(1, n):
            row.append(row[i - 1] * (n - i) // i)
        return row
    
    def print_row(row):
        print('[' + ', '.join(map(str, row)) + ']')
    
    n = int(input('请输入行数:'))
    triangle = generate_triangle(n)
    print_row(triangle[n - 1])