如何将这个金字塔图案上下打印?
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 @hives47801join
正在从可迭代的元素中创建一个由分隔符分隔的字符串:'-'.join(['A', 'B', 'C'])
正在提供 'A-B-C'
@mozway : 除了join方法,你还有其他方法吗
@hives47801 您可以将嵌套循环与print
和end=' '
一起使用,但这不是很好。就用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
【讨论】:
以上是关于如何将这个金字塔图案上下打印?的主要内容,如果未能解决你的问题,请参考以下文章