python运行错误

应该是格式没缩进对,尝试改了没改出来

import numpy as np
def fun(n,W,w,p):
a=np.array([[0](W+1)](n+1))
for i in range(1,n+1):
for j in range(1,W+1):
if w[i-1]>j:
a[i,j]=a[i-1,j]
else:
a[i,j]=max(a[i-1,j],p[i-1]+a[i-1,j-w[i-1]])
print('max value is'+str(a[n,W]))
findDetail(p,n,a[n,W])
def findDetail(p,n,v):
a=np.array([[True](v+1)](n+1))
for i in range(0,n+1):
a[i][0]=True
for i in range(1,v+1):
a[0][i]=False
for i in range(1,n+1):
for j in range(1,v+1):
if p[i-1]>j:
a[i,j]=a[i-1,j]
else:
a[i,j]=a[i-1,j] or a[i-1,j-p[i-1]]
if a[n,v]:
i=n
result=[]
while i>=0:
if a[i,v] and not a[i-1,v]:
result.append(p[i-1])
v-=p[i-1]
if v==0:
break
i-=1
print(result)
else:
print('error')
weights=[1,2,5,6,7,9]
price=[1,6,18,22,28,36]
fun(len(weights),13,weights,price)

img

缩进大概是这样?

import numpy as np
def fun(n,W,w,p):
    a=np.array([[0](W+1)](n+1))
    for i in range(1,n+1):
        for j in range(1,W+1):
            if w[i-1]>j:
                a[i,j]=a[i-1,j]
            else:
                a[i,j]=max(a[i-1,j],p[i-1]+a[i-1,j-w[i-1]])
        print('max value is'+str(a[n,W]))
        findDetail(p,n,a[n,W])
def findDetail(p,n,v):
    a=np.array([[True](v+1)](n+1))
    for i in range(0,n+1):
        a[i][0]=True
    for i in range(1,v+1):
        a[0][i]=False
    for i in range(1,n+1):
        for j in range(1,v+1):
            if p[i-1]>j:
                a[i,j]=a[i-1,j]
            else:
                a[i,j]=a[i-1,j] or a[i-1,j-p[i-1]]
        if a[n,v]:
            i=n
        result=[]
        while i>=0:
            if a[i,v] and not a[i-1,v]:
                result.append(p[i-1])
                v-=p[i-1]
            if v==0:
                break
                i-=1
                print(result)
            else:
                print('error')
weights=[1,2,5,6,7,9]
price=[1,6,18,22,28,36]
fun(len(weights),13,weights,price)