Прежде чем приступить к изучению этой программы шаблонов, позвольте мне признаться вам в одной вещи. Этой конкретной программе шаблонов потребовалось почти 20 минут, чтобы взломать логику. Итак, я прошу вас сделать то же самое. Во-первых, обратите внимание на закономерность и попытайтесь взломать логику. Если у вас получилось, респект вам. Если нет, не беспокойтесь, мы взломаем его вместе.
Вот так,
Точно так же вывод шаблона для n = 5
Теперь остановитесь здесь, понаблюдайте за паттерном достаточно близко по отношению к значению n и попытайтесь разрушить структуру паттерна.
Если вы читали мои предыдущие статьи о программах шаблонов на питоне, то могли заметить, что если мы сможем ответить на три вопроса, мы сможем решить логику.
Давайте ответим на эти вопросы.
- Сколько строк относительно 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 (строки кода) может быть высоким, поскольку я подробно закодировал. вы можете оптимизировать в зависимости от вашего удобства.
Этот тип шаблонной программы поможет вам освоить циклы и программирование условий.
Удачного кодирования…