首页 > 解决方案 > Python菜鸟问题:多项式乘法问题

问题描述

有人可以帮我解决我的代码吗,我得到的唯一答案是所有输入的 [0,0] -:

def add_poly(a,b,n):
    p=[]
    
    for i in range((n*2)-2):
        p.append(0)
    for i in range(0,n-1):
        for j in range(0,n-1):
            p[i+j]=(a[i]*b[j])

    return p


n=2
a=[1,3]
b=[0,2]

print(add_poly(a,b,n))

标签: python

解决方案


您的基本问题是range在上限上是专有的。要遍历n元素,您可以执行range(n),而不是range(n - 1). 这会给你一个循环0, 1, 2, ..., n-1

另一个问题是您提供了有关多项式大小的冗余信息。学位已经编码在它们的长度中。如果您提供n,那是多余的信息,并且可能是错误的。例如,如果您想将二阶多项式 ( n=3) 与三阶 ( n=4) 相乘怎么办?

最后,您尝试实现的操作看起来像是乘法而不是加法。

因此,这里有一个示例,说明如何使用len来获取多项式的阶数并enumerate放置元素。您还可以在一行中预先分配输出列表:

def mult_poly(a, b):
    p = [0] * (len(a) + len(b) - 1)

    for i, x in enumerate(a):
        for j, y in enumerate(b):
            p[i + j] += x * y

    return p

推荐阅读