在python中创建一个非右派Pascal的三角形(居中)

时间:2014-09-14 13:32:31

标签: python-2.7 pascals-triangle

我需要编写一个输入非右Pascal三角形的代码,给定第n级作为输入,其中第一行是第0级。除此之外,在每一行的末尾必须指出水平。 这是我到目前为止所做的:

level = input('Please input nth level: ')
x = -1
y = 1

while x < level:
    x = x+1
    d = str(11**x)
    while y < level:
        y = y+1
        print " ",
    for m,n in enumerate(d):
        print str(n) + " ",
    while y < level:
        y = y+1
        print " ",
    print x

输入3时,输出:

    1  0
1  1  1
1  2  1  2
1  3  3  1  3

我想要的输出是:

   1      0
    1 1     1
   1 2 1    2
  1 3 3 1   3

1 个答案:

答案 0 :(得分:0)

您可以使用str.format为您的字符串居中:

level = int(raw_input('Please input nth level: '))

N = level*2 + 5
for x in range(level+1):
    d = ' '.join(str(11**x))
    print('{d:^{N}} {x:>}'.format(N=N, d=d, x=x))

Please input nth level: 4
       1        0
      1 1       1
     1 2 1      2
    1 3 3 1     3
   1 4 6 4 1    4

请注意,如果d = '1331',您可以使用' '.join(d)在每个数字之间添加空格:

In [29]: d = '1331'

In [30]: ' '.join(d)
Out[30]: '1 3 3 1'

请注意,使用d = str(11**x)是计算Pascal三角形中数字的有问题的方法,因为它不能为x&gt; = 5提供正确的数字。例如,

Please input nth level: 5
       1        0
      1 1       1
     1 2 1      2
    1 3 3 1     3
   1 4 6 4 1    4
  1 6 1 0 5 1   5   <-- Should be 1 5 10 10 5 1 !

您可能希望以不同的方式compute the digits in Pascal's triangle