Python 类型错误:';int';对象不可编辑?
我在实现动态规划算法时遇到了这个错误。这是我的代码:Python 类型错误:';int';对象不可编辑?,python,Python,我在实现动态规划算法时遇到了这个错误。这是我的代码: def shoot(aliens): s=[0]*10 s[0]=0 s[1]=0 for j in xrange(2,len(aliens)): for i in xrange(0,j): s[j]=max(s[i] + min(aliens[j],fib(j-i))) <---Error here print s[len(aliens)-1] re
def shoot(aliens):
s=[0]*10
s[0]=0
s[1]=0
for j in xrange(2,len(aliens)):
for i in xrange(0,j):
s[j]=max(s[i] + min(aliens[j],fib(j-i))) <---Error here
print s[len(aliens)-1]
return s[len(aliens)-1]
def fib(n):
if n == 0:
return 0
if n == 1:
return 1
return fib(n-1) + fib(n-2)
aliens=[1,10,10,1]
print shoot(aliens)
但我错了。
所以,我这样编辑它,但我不知道如何使用max()取出数组中最大的一个
b=0
for j in xrange(2,len(aliens)):
for i in xrange(0,j):
a[b]=(s[i] + min(aliens[j],fib(j-i)))
b+=1
s[j]=Largest(a[b]); <--How can I do that with Max() function
b=0
对于x范围内的j(2,len(外星人)):
对于x范围内的i(0,j):
a[b]=(s[i]+min(外星人[j],fib(j-i)))
b+=1
s[j]=最大(a[b]) max
需要一个iterable参数
最大值(…)
最大值(iterable[,key=func])->值
最大值(a,b,c,…[,key=func])->值
使用单个iterable参数,返回其最大项。
对于两个或多个参数,返回最大的参数
但是你通过s[i]+min(外星人[j],fib(j-i))
传递给它的是一个int
。您想要的可能是s[j]=max(s[i],min(外星人[j],fib(j-i))
max
需要一个可编辑的参数
最大值(…)
最大值(iterable[,key=func])->值
最大值(a,b,c,…[,key=func])->值
使用单个iterable参数,返回其最大项。
对于两个或多个参数,返回最大的参数
但是你通过s[i]+min(外星人[j],fib(j-i))
传递给它的是一个int
。您想要的可能是s[j]=max(s[i],min(外星人[j],fib(j-i))
你不是说:
s[j] = max(s[i], min(aliens[j],fib(j-i)))
你不是说:
s[j] = max(s[i], min(aliens[j],fib(j-i)))
这意味着您不能迭代单个int
对象
max()。最小的,或者他们想要一个可以迭代的对象
您的max()
调用使用一个参数执行,该参数应该是可编辑的,但不是。这意味着您不能在单个int
对象上迭代
max()。最小的,或者他们想要一个可以迭代的对象
您的max()
调用使用一个参数执行,该参数应该是可编辑的,但不是。max
和min
函数需要几个参数或一系列元素。对min()
的调用有两个参数(ok),但对max()
的调用只有一个参数。不确定要在此处最大化什么…max
和min
函数需要几个参数或一系列元素。对min()
的调用有两个参数(ok),但对max()
的调用只有一个参数。不确定您希望在此处最大化什么…您正在执行以下操作:
>>> max(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
或
您正在执行以下操作:
>>> max(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
或
它应该是,s[j]=max(s[i],min(外星人[j],fib(j-i))
,不是吗?应该是,s[j]=max(s[i],min(外星人[j],fib(j-i))
,不是吗?你试过max(a)
?这个错误也发生在min(value,*set())/code>中,第二个参数通常是非空的,但有时可能是空的。一个简单的解决方法是min(value,value,*set())
。您是否尝试过max(A)
?在min(value,*set())
中也会出现此错误,其中第二个参数通常为非空,但有时可能为空。一个简单的解决方法是min(value,value,*set())
。
>>> max(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
s[j] = max(s[i], min(aliens[j],fib(j-i)))
s[j] = max(s[j], s[i] + min(aliens[j],fib(j-i)))