Прежде чем приступить к изучению этой программы шаблонов, позвольте мне признаться вам в одной вещи. Этой конкретной программе шаблонов потребовалось почти 20 минут, чтобы взломать логику. Итак, я прошу вас сделать то же самое. Во-первых, обратите внимание на закономерность и попытайтесь взломать логику. Если у вас получилось, респект вам. Если нет, не беспокойтесь, мы взломаем его вместе.

Вот так,

Точно так же вывод шаблона для n = 5

Теперь остановитесь здесь, понаблюдайте за паттерном достаточно близко по отношению к значению n и попытайтесь разрушить структуру паттерна.

Если вы читали мои предыдущие статьи о программах шаблонов на питоне, то могли заметить, что если мы сможем ответить на три вопроса, мы сможем решить логику.

Давайте ответим на эти вопросы.

  1. Сколько строк относительно n?

Для n = 5 у нас есть 9 строк. аналогично, для n = 4 у нас есть 7 строк. Итак, для n строк у нас будет (total_rows = 2*n -1) строк. Сложность в том, что нам нужно разбить все строки на 3 части. так как первая часть имеет один вид шаблона по отношению ко второй части и третьей части и наоборот.

2. Сколько столбцов нужно напечатать в каждой конкретной строке?

Если вы снова посетите определенную строку в выводе шаблона. Предположим, в первой половине для каждой строки у нас есть число, которое уменьшается, а затем одно число повторяется по своей природе, а затем число увеличивается.

Три вида рисунка в один ряд. Первый — декрементный, второй — повторяющийся, а третий — инкрементный.

3. Что печатать в определенном столбце каждой строки?

Нам нужно напечатать число на основе номера строки и номера столбца.

Код Python для этого шаблона

def number_pattern(n):
    # first half pattern
    total_rows = (2 * n) - 1
    n1 = total_rows // 2
    i = 1
    while i <= n1:
        # Decrement loop from n
        col = 1
        p = n
        while col <= i:
            print(p, end="")
            p = p - 1
            col = col + 1

        # repetitive loop
        col = 1
        p = n1 - i + 2
        while col <= (2 * (n1 - i) + 1):
            print(p, end="")
            col = col + 1

        # Increment loop from __ to n
        col = 1
        p = n1 - i + 2
        while col <= i:
            print(p, end="")
            p = p + 1
            col = col + 1
        print()
        i = i + 1

    # Second half Pattern
    p = n
    col = 1
    while col <= n:
        print(p, end="")
        col = col + 1
        p = p - 1

    col = 1
    p = 2
    while col <= n - 1:
        print(p, end="")
        col = col + 1
        p = p + 1
    print()

    n2 = n1
    # Third Half pattern
    i = 1
    while i <= n2:
        # Decrement loop from n
        col = 1
        p = n
        while col <= n2 - i + 1:
            print(p, end="")
            p = p - 1
            col = col + 1

        # Repetitive loop
        col = 1
        while col <= (2 * i - 1):
            print(i + 1, end="")
            col = col + 1

        # Increment loop
        col = 1
        p = i + 1
        while col <= (n2 - i + 1):
            print(p, end="")
            col = col + 1
            p = p + 1

        i = i + 1
        print()


n = int(input())
number_pattern(n)

LOC (строки кода) может быть высоким, поскольку я подробно закодировал. вы можете оптимизировать в зависимости от вашего удобства.

Этот тип шаблонной программы поможет вам освоить циклы и программирование условий.

Удачного кодирования…