Python - 多项式除法的余数
我刚开始学习Python,正在尝试解决多项式的最大公约数(gcd)问题,但在进行多项式的除法时遇到了困难。
f=[1,2,3,4,5,6,7,8,9]
g=[7,8,9,10,11]
n=len(f)
m=len(g)
c=0
z=m
print f[0:n]
print g[0:m]
while not (z==n):
divisor=f[0]/g[0]
for i in range (0,m):
rem=f[i]-g[i]*divisor
print i
f=rem*1
z=z+1
c=0
print rem[0:len(rem)]
我在这一行出错了:divisor=f[0]/g[0]
。错误信息如下:
TypeError: 'int' object has no attribute 'getitem'
1 个回答
4
在你的循环中,你把 list
这个变量重新赋值成了一个 int
(整数),这样做会导致错误。
f=rem*1
假设你的列表 f 是 f = [1,2,3]
,而 rem
比如说是 3。那么发生的事情是这样的:
In [149]: f = [1,2,3]
In [150]: rem = 3
In [151]: f = rem * 1
In [152]: f
Out[152]: 3
所以在下一次循环中,f[0] 就没意义了,因为 f 已经不再是一个列表了。你需要把
f = rem * 1
改成
f[i] = rem * 1
另外,你代码中的最后一行会报错,因为你在尝试获取一个整数的长度。rem
在你的代码里不是一个列表,而是一个整数,所以你不能对它进行索引操作。