Python - 多项式除法的余数

1 投票
1 回答
1921 浏览
提问于 2025-04-18 02:06

我刚开始学习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 在你的代码里不是一个列表,而是一个整数,所以你不能对它进行索引操作。

撰写回答