有人能帮我解决我的代码吗,我得到的唯一答案是所有输入的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))
发布于 2020-07-08 22:02:43
您的基本问题是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
https://stackoverflow.com/questions/62796248
复制相似问题