Я пытаюсь создать функцию на Python, которая помогает реализовать и продолжить следующий числовой паттерн
Наткнулся на интересную задачку, у меня есть паттерн:
1
2 4
6 8 10
13 15 17 19
Мне нужно написать функцию, которая реализует и продолжает данный паттерн. Только необходимо это сделать именно используя тот факт, что начиная со 2 строки, следующая строка = предыдущая + 3 и так далее. Мой вариант использования данной особенности:
def print_pattern(row):
number = 1
for i in range(1, row + 1):
number += 1 + (n-1)*3
for j in range(n):
print(number + 2 * i, end=' ')
print()
print_pattern(4)
На данный момент вывод:
2
6 8
13 15 17
23 25 27 29
Задача в том, чтобы вывод был такой, что и в примере и работал с той же закономерностью дальше, но важный критерий не изменять саму идею моей закономерности:
Первая ступень: Начинаем с “1”.
Вторая ступень: Поднимаемся до “2”. Разница с прошлой ступенью - 1
Третья ступень: Поднимаемся до “6”. Разница с прошлой ступенью - 4
Четвертая ступень: Поднимаемся до “13”. Разница с прошлой ступенью - 7
Разница между первыми числами каждого ряда увеличивается с каждым шагом. 1, 4, 7, 10, 13, 16, 19... (см фото)
Ответы (1 шт):
Классический вариант реализации с вложенными циклами:
def p1(row):
d = 1
n = 1
for i in range (1, row + 1):
for m in range(n, n + i * 2 - 1, 2):
print(m, end = " ")
print()
n += d
d += 3
Также можно сократить присваивания, избавиться от вложенного цикла и вывести последовательность внутри print
:
def p2(row):
d, n = 1, 1
for i in range (row):
print(*range(n, n + i * 2 + 1, 2), sep = " ")
n, d = n + d, d + 3
Полностью однострочный вариант, с использованием "моржового" присваивания:
def p4(row): n, d = 1, 1; [(print(*range(n, n + 2 * i + 1, 2)), n := n + d, d := d + 3) for i in range(row)]