Как опыт обучения для Python, я пытаюсь закодировать свою собственную версию треугольника Паскаля. Мне потребовалось несколько часов (поскольку я только начинаю), но я вышел с этим кодом:
pascals_triangle = []
def blank_list_gen(x):
while len(pascals_triangle) < x:
pascals_triangle.append([0])
def pascals_tri_gen(rows):
blank_list_gen(rows)
for element in range(rows):
count = 1
while count < rows - element:
pascals_triangle[count + element].append(0)
count += 1
for row in pascals_triangle:
row.insert(0, 1)
row.append(1)
pascals_triangle.insert(0, [1, 1])
pascals_triangle.insert(0, [1])
pascals_tri_gen(6)
for row in pascals_triangle:
print(row)
который возвращает
[1]
[1, 1]
[1, 0, 1]
[1, 0, 0, 1]
[1, 0, 0, 0, 1]
[1, 0, 0, 0, 0, 1]
[1, 0, 0, 0, 0, 0, 1]
[1, 0, 0, 0, 0, 0, 0, 1]
Однако я понятия не имею, куда идти отсюда. Я несколько часов стуча головой о стену. Я хочу подчеркнуть, что я НЕ хочу, чтобы вы сделали это для меня; просто подтолкните меня в правильном направлении. В качестве списка мой код возвращает
[[1], [1, 1], [1, 0, 1], [1, 0, 0, 1], [1, 0, 0, 0, 1], [1, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 1]]
Спасибо.
EDIT: Я принял хороший совет, и я полностью переписал свой код, но теперь у меня возникает другая проблема. Вот мой код.
import math
pascals_tri_formula = []
def combination(n, r):
return int((math.factorial(n)) / ((math.factorial(r)) * math.factorial(n - r)))
def for_test(x, y):
for y in range(x):
return combination(x, y)
def pascals_triangle(rows):
count = 0
while count <= rows:
for element in range(count + 1):
[pascals_tri_formula.append(combination(count, element))]
count += 1
pascals_triangle(3)
print(pascals_tri_formula)
Однако я нахожу, что вывод немного нежелателен:
[1, 1, 1, 1, 2, 1, 1, 3, 3, 1]
Как я могу это исправить?