我正在创建一个程序,将一个金字塔插入一个高度为h的金字塔中.然而,我的代码似乎缺乏



这是我的工作代码。我想在这方面使用纯迭代,这就是为什么我故意不使用数组和字符串:

def print_triangles(h):
base = 2 * h - 1
space = base * (h-1) + (h-1)
for _ in range(1, h+1):
for row in range(1, h+1):
stars = 2 * row - 1
for _ in range(space):
print(" ", end="")
for _ in range(stars):
print("*", end="")
space = space - 1
print()
space = space - h + 1
h = int(input())
print_triangles(h)

这是当h=3:时的输出

*
***
*****
*
***
*****
*
***
*****

然而,我希望它看起来像这样:

*
***
*****
*    *    *
***  ***  ***
***************
*    *    *    *    *
***  ***  ***  ***  ***
*************************

您缺少一层迭代,并且每层只打印一个金字塔。您的代码应该是:

def print_triangles(h):
base = 2 * h - 1
for layer in range(1, h+1):
prefix = base * (h - layer)
for row in range(1, h+1):
for _ in range(prefix):
print(" ", end="")
pyramids = layer*2 -1
stars = 2 * row - 1
spaces = h - row
for pyramid in range(pyramids):
for _ in range(spaces):
print(" ", end="")
for _ in range(stars):
print("*", end="")
for _ in range(spaces):
print(" ", end="")
print()

最新更新