不知道怎么输出第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)
#读入正整数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()
#'''
运行结果如下:
解决方案:
首先,我们需要了解杨辉三角的规律。杨辉三角是一种数学上的三角形,它的每一行数值等于上一行数值移动一位后相邻的两个数之和。根据这个规律,我们可以使用递推的方式来生成杨辉三角的每一行。具体做法如下:
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])