n = 10
binom = [[1]]
for i in range(1, n):
    r = [1]
    for j in range(1, i):
        r.append(binom[i - 1][j] + binom[i - 1][j - 1])
    r.append(1)
    binom.append(r[:])
for line in binom:
    print(line)

from math import comb

for i in range(n):
    print([comb(i, j) for j in range(i + 1)])

def expand(n):
    return ' + '.join(f"{comb(n, k)} * a^{n - k} * b^{k}" for k in range(n + 1))

def format(k, n):
    if k == n:
        return f"b^{n}" if n > 1 else "b"
    elif k == 0:
        return f"a^{n}" if n > 1 else "a"
    elif k == 1:
        return f"{n}*{f'a^{n - 1}' if n > 2 else 'a'}*b"
    elif k == n - 1:
        return f"{n}*a*{f'b^{n - 1}' if n > 2 else 'b'}"
    else:
        return f"{comb(n, k)}*a^{n - k}*b^{k}"
        
def expand_power_up(n):
    return ' + '.join(f"{format(k, n)}" for k in range(n + 1))
for n in range(1, 10):
    print(expand_power_up(n))

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: