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)))