这是我的工作代码。我想在这方面使用纯迭代,这就是为什么我故意不使用数组和字符串:
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()