Вычислений, конечно, много лишних. Можно оптимизировать. def fact(m): f = 1 for i in range(1,m+1): f = f*i return f
def koef(n,k): a = fact(n) b = fact(k) c = fact(n-k) return a//(b*c)
print("Введите n:") n = int(input()) k = 0 while k <= n: print(koef(n,k),"*a^",n-k,"*b^",k,sep = '', end = '') k = k+1 if k <= n: print(" + ",end = '')