打印空金字塔

时间:2018-12-10 13:31:19

标签: python python-3.x ascii-art

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

   *
  * *
 *   *
*     *
   *

但是它打印的是:

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

假设 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)

1 个答案:

答案 0 :(得分:1)

这种事情怎么样?

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)