#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