Выведите обратную пирамиду n уровня следующим образом, где n — положительное целое число, принимаемое в качестве входных данных

#python

#python

Вопрос:

Выведите обратную пирамиду n уровня следующим образом, где n — положительное целое число, принимаемое в качестве входных данных.

 Each triangle will be made out of “*” symbols and the spaces will be filled by "#" symbols for each row. For example, a 3 level reverse pyramid will look as follows:

    *****
    #***#
    ##*##
    Note: There should be no space between the stars. Remember to not print any extra character or spaces or else your solution could be rejected.
    Sample input:
    4
    Sample output:
    *******
    #*****#
    ##***##
    ###*###
  

Ниже приведен код:

Код:

 def print_pattern(n):
    for i in range(1,n 1):
        for j in range(i-1):
            print('#',end='')
        for k in range((n 1)-i):
            print('*',end= '')
        for m in range(n-i):
            print('*',end='')
        for j in range(i-1):
            print('#',end='')
        print('r')
print_pattern(4)
  

Ошибка:

 None of my Test cases are Passing
  

Комментарии:

1. Кажется подозрительным, что вы печатаете, r а не n , что гораздо более распространено, и тесты могут ожидать. Кроме того, вместо написания циклов for для печати по одному символу за раз, вы можете создавать строки в Python, собирая их части: например, s1 = '#' * (i - 1) . Сделайте что-то подобное для s2 . Затем просто распечатайте их: print(s1 s2 s1)

2. Я попробовал n, и результаты по-прежнему не дают результатов

Ответ №1:

Спасибо, ребята, я нашел решение

 n=input()
i=n-1
while i>-1:
        print('#'*(n-i-1)   '*'*(2*i 1) '#'*(n-i-1))
        i=i-1
  

Ответ №2:

 def print_pattern(n):
    for i in range(1,n 1):
      for s in range(1,i):
        print('#',end=" ")
      for p in range(1,((n*n) 1)-((n*n)//2)-i-i):
        print("*",end=" ")
      for s in range(1,i):
        print('#',end=" ") 
      print('r')
print_pattern(4)
  

вы можете попробовать это и изменить значение n в соответствии с вашими требованиями

Комментарии:

1. Вывод решения ввода 4 * * * * * * # * * * * # # # * * # # # # # # # # Ожидаемый результат ******* #*****# ##***## ###*###

Ответ №3:

Вам нужно вычислить, какую длину * и # занимает в каждой строке перед печатью, и просто используйте str оператор repeat * для повторения этих символов

Длина каждой строки фиксирована на L = 2*n - 1 , т.е. общая длина * s и # s будет L на каждом уровне.

На каждом уровне n уменьшается на 1, и количество * s может быть вычислено 2*n-1 на этом уровне.

Теперь вы можете догадаться, какую длину # s должны занимать с каждой стороны. Это (L-l)/2 .

Затем, имея это под рукой, вы можете легко печатать строки, используя оператор repeat.

Код является :

 def print_pattern(n):
  L = 2*n-1
  while (n > 0):
    l = 2*n-1
    h = int((L-l)/2)
    print('#'*h '*'*l '#'*h)
    n = n - 1