如何将这个金字塔图案上下打印?

Posted

技术标签:

【中文标题】如何将这个金字塔图案上下打印?【英文标题】:How to print this pyramid pattern up side down? 【发布时间】:2022-01-22 21:46:58 【问题描述】:

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

模式:

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

我已经尝试过这段代码,似乎这不是获取它的正确方法。感谢任何解决方案

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]

【问题讨论】:

【参考方案1】:

你真的需要/想要使用 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

【讨论】:

你能详细说明一下加入的东西在做什么 @hives47801 programiz.com/python-programming/methods/string/join @hives47801 join 正在从可迭代的元素中创建一个由分隔符分隔的字符串:'-'.join(['A', 'B', 'C']) 正在提供 'A-B-C' @mozway : 除了join方法,你还有其他方法吗 @hives47801 您可以将嵌套循环与printend=' ' 一起使用,但这不是很好。就用join,这是标准方法。【参考方案2】:

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

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)

【讨论】:

【参考方案3】:

有什么解决办法吗?好的:

>>> 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

【讨论】:

以上是关于如何将这个金字塔图案上下打印?的主要内容,如果未能解决你的问题,请参考以下文章

金字塔图案

ForDemo.java打印一个金字塔

打印各种图案~

打印各种图案~

金字塔图案

怎样用JAVA打印出下面下列数字金字塔