函数或过程不能使用通用程序的变量(python)

函数或过程不能使用通用程序的变量(python),python,Python,所以昨天我和我的朋友研究了一个我们感兴趣的问题,我们遇到了这个问题:最大值或总数不能用在fmax中,即使我们在通用程序中将它指定为int,有什么建议吗 max = 0 totals = 0 N = 0 C = 0 taken = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] W = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] def compare(x): if x > max:

所以昨天我和我的朋友研究了一个我们感兴趣的问题,我们遇到了这个问题:最大值或总数不能用在fmax中,即使我们在通用程序中将它指定为int,有什么建议吗

max = 0
totals = 0
N = 0
C = 0
taken = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
W     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
def compare(x):
    if x > max:
        max = x
def fmax():
    for i in range(len(taken)):
        #print (max,' ',item)
        if taken[i] ==0 :
            taken[i] =1
            if totals+ W[i] <= C:
                totals += W[i]
                fmax()
                totals -= W[i]
            else:
                compare(totals)
                taken[i] = 0
N = int(input('Enter bulls number: '))
C = int(input('Enter the available weight: '))
for i in range(N):
W[i] = int(input('W[i]='))
totals = 0
fmax()
print (max)
max=0
总计=0
N=0
C=0
take=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
W=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
def比较(x):
如果x>最大值:
最大值=x
def fmax():
对于范围内的i(len(已拍摄)):
#打印(最大,,,项)
如果采用[i]==0:
取[i]=1

如果totals+W[i]自从您在函数中重新分配到
totals
max
后,您必须告诉解释器这些是全局变量,而不是“新的”局部变量。在每个相关函数的第一行添加
全局总计
全局最大值


正如@InbarRose评论的那样,您最好为
max
选择一个更好的名称,因为它隐藏了一个内置函数。

max
是一个内置python函数,您正在隐藏它。你不应该这样做。而且,你可能应该把整个东西放在一个带有子函数或辅助函数的函数中,生成一个递归函数,或者生成一个类。你不应该和全球人一起工作。祝你好运