Печать пустой пирамиды - PullRequest
       14

Печать пустой пирамиды

0 голосов
/ 10 декабря 2018

Я хочу написать программу, которая печатает этот вывод:

   *
  * *
 *   *
*     *
   *

Но вместо этого она печатает:

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

Предположим, 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 голосов
/ 10 декабря 2018

Как насчет такого рода вещей?

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

Что, например, для n = 5 дает такой вывод:

   *
  * *
 *   *
*     *
   *

Это то, что у вас былоИмеется в виду?

Вот менее кодовая версия для гольфа

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)
...