Python 中的 Pascal 三角形与二维数组
Pascal's triangle in Python with 2-D Arrays
我正在尝试编写一个 python 代码来遍历二维数组,外部列表中应包含行,内部列表中应包含 Pascal 三角形中数字的元素。我相信我 运行 遇到了初始化列表的问题,自从我在 Python 中写信以来已经有一段时间了,所以任何帮助将不胜感激。
我尝试使用这张图片编写我的代码
from math import factorial
def binomial(x, y):
try:
return factorial(x) / (factorial(y) * factorial(x - y))
except ValueError:
return 0
def pascals_triangle(number_of_rows):
triangle = []
if number_of_rows <= 0:
return None
else:
for row in range(number_of_rows+1):
for column in range(row+1):
triangle[row][column] = (binomial(row, column))
return triangle
print(pascals_triangle(1))
您将 triangle
视为二维列表,但它不是,这就是您收到错误的原因。尝试用这个替换你的函数:
def pascals_triangle(number_of_rows):
triangle = []
if number_of_rows <= 0:
return None
else:
for row in range(number_of_rows+1):
triangle.append([binomial(row, column) for column in range(row+1)])
return triangle
使用 Pascal 的方法构建 Pascal 的三角形是值得的——只有加法,没有不必要的阶乘:
def PascalTriangle(n):
res = [[1]]
print(res[0])
for line in range(2, n+2):
newline = [1]
for i in range(1, line-1):
newline.append(res[-1][i-1] + res[-1][i])
newline.append(1)
res.append(newline)
print(newline)
return res
PascalTriangle(6)
[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]
我正在尝试编写一个 python 代码来遍历二维数组,外部列表中应包含行,内部列表中应包含 Pascal 三角形中数字的元素。我相信我 运行 遇到了初始化列表的问题,自从我在 Python 中写信以来已经有一段时间了,所以任何帮助将不胜感激。
我尝试使用这张图片编写我的代码
from math import factorial
def binomial(x, y):
try:
return factorial(x) / (factorial(y) * factorial(x - y))
except ValueError:
return 0
def pascals_triangle(number_of_rows):
triangle = []
if number_of_rows <= 0:
return None
else:
for row in range(number_of_rows+1):
for column in range(row+1):
triangle[row][column] = (binomial(row, column))
return triangle
print(pascals_triangle(1))
您将 triangle
视为二维列表,但它不是,这就是您收到错误的原因。尝试用这个替换你的函数:
def pascals_triangle(number_of_rows):
triangle = []
if number_of_rows <= 0:
return None
else:
for row in range(number_of_rows+1):
triangle.append([binomial(row, column) for column in range(row+1)])
return triangle
使用 Pascal 的方法构建 Pascal 的三角形是值得的——只有加法,没有不必要的阶乘:
def PascalTriangle(n):
res = [[1]]
print(res[0])
for line in range(2, n+2):
newline = [1]
for i in range(1, line-1):
newline.append(res[-1][i-1] + res[-1][i])
newline.append(1)
res.append(newline)
print(newline)
return res
PascalTriangle(6)
[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]