打印空金字塔

Printing empty Pyramid

我想编写一个打印此输出的程序:

   *
  * *
 *   *
*     *
   *

但它打印的是:

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

假设用户输入n = 5,那么第一个星星应该在中间,最后一个星星也应该在中间,所以我可以将输入的数字除以乘以 2 得到第一颗和最后一颗星的位置。

对于其余的星星,我不明白如何做到,如果一颗星星在上面,那么下一颗星星不应该在它下面。

def Empty_triangle(n): 
    k = 2*n - 2
    for i in range(0, n): 
        for j in range(0, k): 
            print(end=" ")

        k = k - 1

        for j in range(0, i+1): 
            # printing stars 
            print("* ", end="") 

        # ending line after each row 
        print("\r") 

# Driver Code 
n = 5
Empty_triangle(n)

这种事情怎么样?

print("\n".join([" "*(n-2-i)+"*"+" "*(2*i-1)+("*"if i>0 else"") for i in list(range(n-1))+[0]]))

例如,对于 n=5,输出为:

   *
  * *
 *   *
*     *
   *

这是你想要的那种东西吗?

这里有一个少代码的golfish版本

def Empty_triangle(n): 
    for i in list(range(n-1))+[0]: #i.e. [0,1,2,3,4,0] so the last line is the same as the first
        line = ""
        leadingSpaces = n-2-i
        line += " "*leadingSpaces
        line += "*"
        if i != 0:
            middleSpaces = 2*i-1
            line += " "*middleSpaces
            line += "*"
        print(line)


# Driver Code 
n = 5
Empty_triangle(n)