[英]Python noob question: Polynomial multiplication question
有人可以帮我解决我的代码吗,我得到的唯一答案是所有输入的 [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))
您的基本问题是range
在上限上是唯一的。 要遍历n
元素,请执行range(n)
,而不是range(n - 1)
。 这会给你一个循环0, 1, 2, ..., n-1
。
另一个问题是您提供了有关多项式大小的冗余信息。 学位已经编码在它们的长度中。 如果您提供n
,那是多余的信息,并且可能是错误的。 例如,如果您想将二阶多项式 ( n=3
) 乘以三阶 ( n=4
) 怎么办?
最后,您尝试实现的操作看起来像是乘法而不是加法。
因此,这里有一个示例,说明如何使用len
来获取多项式的顺序,并enumerate
以放置元素。 您也可以在一行中预先分配 output 列表:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.