帕斯卡三角形程序失败



代码:

def pascaltri(r):
for i2 in range(1,r+1):
string = ""
string += " "*int(r-i2)
string += " ".join(map(str, str(11**i2-1)))
print(string)
pascaltri(5)

这给了我:

1 0
1 2 0
1 3 3 0
1 4 6 4 0
1 6 1 0 5 0

我想要的是:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

请告诉我为什么以及如何修复零并在上面加一个
感谢您的帮助。

你已经接近使用11的幂了"技巧";。只需注意它最多只能工作5

为了得到这个";工作";,你真的只需要修复一些";关一";错误:

def pascaltri(r):
for i2 in range(r):
string = " " * (r - i2)
string += " ".join(map(str, str(11 ** i2)))
print(string)
pascaltri(5)

现在应该给你:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

记住,这个技巧在5之后就失效了,所以你可能想要一个更好的(通用(解决方案


这不是";Pascal三角的一般解";而是专门针对原始海报的问题

"如何打印首字母1以及如何修复后面的零">

我的回答解决了这些问题,我两次清楚地注意到,原始海报提出的方法在5之后就失效了。

以下是帕斯卡三角形的一个真实解决方案:

def printPascal(n):
for row in range(1, n + 1):
cell_value = 1
print(cell_value, end=" ")
for cell in range(1, row):
cell_value = int(cell_value * (row - cell) / cell)
print(cell_value, end=" ")
print("")

现在您可以打印Pascal(10(。我将由您决定如何进行间距。

最新更新