Не удается заставить выходные данные поворачиваться на 180 градусов

#python

#python

Вопрос:

Мне нужно создать вложенный треугольник из хэш-символов. Но я не могу заставить его поворачиваться на 180 градусов, как мне это нужно, я также не получаю 12 строк, как мне нужно.

Это мой код.

 n = int(input("Enter a number: "))
for i in range (0, n):
    for j in range(0, i   1):
        print("#", end='')
    print("")
for i in range (n, 0, -1):
    for j in range(0, i -1):
        print("#", end='')
    print("")
  

Входное значение равно 6.

 Enter a number:6
     #
    ##
   ###
  ####
 #####
######
######
 #####
  ####
   ###
    ##
     #
  

Но я продолжаю получать это:

 Enter a number: 6
#
##
###
####
#####
######
#####
####
###
##
#
  

Как мне это исправить?

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

1. Вы не печатаете ни одного из заполняющих пробелов, поэтому ваш результат вряд ли удивителен.

2. Для вывода с выравниванием по правому краю вам нужно напечатать n-i пробелы, за которыми следуют символы i хэштега # в каждой строке.

Ответ №1:

Вы можете использовать str.rjust метод для выравнивания строки по правому краю:

 n = int(input("Enter a number: "))
for i in range(2 * n):
    print(('#' * (n - int(abs(n - i - 0.5)))).rjust(n))
  

Демо: https://ideone.com/27AM7a

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

1. На самом деле, я думаю, что вы создаете msitake, i должно быть от 1 до n 1

Ответ №2:

Немного поздно

 def absp1(x):
    if (x < 0):
        return -x - 1
    return x

n = int(input("Enter a number: "))
for i in range(-n, n):
    for j in range(absp1(i)):
        print(' ', end='')
    for k in range(n-absp1(i)):
        print('#',end='')
    print()
  

Ответ №3:

Вы можете использовать это (вручную вычисляя количество пробелов и хэштегов):

 n = int(input("Enter a number: "))
for i in range (1, n   1):
    print(" "*(n - i)   "#"*i)
for i in range (n, 0, -1):
    print(" "*(n - i)   "#"*i)
  

Или используйте rjust :

 n = int(input("Enter a number: "))
for i in range (1, n   1):
    print(("#"*i).rjust(n))
for i in range (n, 0, -1):
    print(("#"*i).rjust(n))
  

Ответ №4:

Также это работает нормально

 num = 6
sing = "#"
for i in range(1, num * 2):
    if i > num:
        spaces = " " * (i - num)
        signs = sign * (2 * num - i)
        line = "{0}{1}".format(spaces, signs)
    elif i == num:
        spaces = " " * (num - i)
        signs = sign * i
        line = "{0}{1}n{0}{1}".format(spaces, signs)
    else:
        spaces = " " * (num - i)
        signs = sign * i
        line = "{0}{1}".format(spaces, signs)

    print(line)