-1

我需要编写一个代码,输入一个非右帕斯卡三角形,给定第 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
4

1 回答 1

1

您可以使用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)是计算帕斯卡三角形中数字的一种有问题的方法,因为它没有为您提供 x >= 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 !

您可能希望以不同的方式计算帕斯卡三角形中的数字

于 2014-09-14T13:58:43.727 回答