如何将这个金字塔图案倒过来打印?

How to print this pyramid pattern up side down?

我正在尝试在金字塔图案下方打印。但是没有点击如何为它构建逻辑?

模式:

5 4 3 2 1
  4 3 2 1
    3 2 1 
      2 1
        1 

我试过这段代码似乎不是获得it.Any解决方案的正确方法

import numpy as np
n = 5
cnt=0
var = np.arange(1,n+1)
for row in range(1,n+1):
  print(var[::-1][cnt:])
  cnt= cnt + 1

以上模式的输出:

[5 4 3 2 1]
[4 3 2 1]
[3 2 1]
[2 1]
[1]

你真的need/want会用numpy吗?

这很容易使用纯 python 实现。逻辑是在左侧添加空格来填充(你也可以使用rjust这样的字符串函数):

n = 5
for i in range(n):
    print('  '*i + ' '.join(map(str, range(n-i, 0, -1))))

输出:

5 4 3 2 1
  4 3 2 1
    3 2 1
      2 1
        1

注意。如果你有两位数,你应该使用 rjust:

n = 15
L = 0
for i in range(n):
    s = ' '.join(map(str, range(n-i, 0, -1)))
    L = max(L, len(s))
    print(s.rjust(L))

输出:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
   14 13 12 11 10 9 8 7 6 5 4 3 2 1
      13 12 11 10 9 8 7 6 5 4 3 2 1
         12 11 10 9 8 7 6 5 4 3 2 1
            11 10 9 8 7 6 5 4 3 2 1
               10 9 8 7 6 5 4 3 2 1
                  9 8 7 6 5 4 3 2 1
                    8 7 6 5 4 3 2 1
                      7 6 5 4 3 2 1
                        6 5 4 3 2 1
                          5 4 3 2 1
                            4 3 2 1
                              3 2 1
                                2 1
                                  1

有解决办法吗?好的:

>>> print("\n".join([ "{:>10}".format(" ".join([ str(x) for x in range(n,0,-1) ])) for n in range(5,0,-1) ]))
 5 4 3 2 1
   4 3 2 1
     3 2 1
       2 1
         1

您可以创建一个函数来降低整体复杂性

def pyramid(height):
   L = 0
   for i in range(height):
     s = ' '.join(map(str, range(height-i, 0, -1)))
     L = max(L, len(s))
     print(s.rjust(L))
height = int(input('Enter the height of the Pyramid : '))
pyramid(height)