Отобразить «большой» треугольник на основе ввода n

До сих пор я закодировал способ печати треугольника на основе пользовательского ввода.

Input: 2
Output:
 *
***

Input: 3
Output:
  *
 ***
*****

Мой код Python для этого таков:

row = int(input())

for i in range (1, row + 1):
      for j in range (1, row - i + 1):
            print (end = " ") 
      for j in range (i, 0, -1):
            print ("*", end = "")
      for j in range (2, i + 1):
            print ("*", end = "")
      print()

Как я могу использовать свой текущий код, чтобы получить такой треугольник?

Input: 2
Output:
    *
   ***
 *  *  *
*********

Input: 3
            *
           ***
          *****
       *    *    *
      ***  ***  ***
     ***************
  *    *    *    *    *
 ***  ***  ***  ***  ***
*************************

Мне очень нужна чья-то помощь. Я понятия не имею, как подойти к этому.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот небольшой алгоритм, который печатает то, что вы хотите. Он обрабатывает любое количество строк:

rows = 3
cols = rows * 2 - 1

# Draws one line of a single triangle (the dimensions are given by 'cols' and 'rows')
def printTriangleLine(line, newline = False):
    string = None
    if line < 0: string = " " * cols
    elif line == rows - 1: string = "*" * cols
    else:
        string = " " * (rows-(line+1))
        string += "*" * (line * 2 +1)
        string += " " * (rows-(line+1))

    print(string, end = "")
    if newline: print()


# Big triangles are constituted of small triangles drawn with 'printTriangleLine' 
# They have the same dimensions then the little triangles

def main():
    #iterate the big rows
    for row in range(0, rows):
        # iterates the lines within each little triangle (small rows)
        for line in range(0, rows):
            # iterates the big columns
            for i in range(0, cols):
                # finds the blank triangles
                blank = row < rows - 1
                if blank: blank = i < rows - (row + 1) or i > rows + (row - 1)
                # prints adding a newline at the end of the last column
                printTriangleLine(-1 if blank else line, i==cols-1)

if __name__ == "__main__":
    main()

Выход :

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

Большое спасибо за это, @dspr! Я только начинаю изучать Python и очень застрял в этом. Еще раз спасибо!

daichi 12.12.2020 14:42

Другие вопросы по теме