我是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'
答案 0 :(得分:4)
在你的循环中,你通过
重新分配list
f为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
不是列表,而是整数,因此您无法对其进行索引。