如何在我的代码中修复“未定义全局名称”

时间:2019-01-24 17:39:39

标签: python

我在函数中给出了一个列表,该列表采用数字并尽可能多地相加,以便返回可能更大或更小的最大值

maxsum=0
def maxDistance(lista,limit):
        global maxsum
        lista.sort(reverse=True)
        for i in range(len(lista)):
                 global mega
                 mega[i]=0
        for i in range(len(lista)):
                if lista[i]<=limit:
                        for j in range(len(lista)):
                                if i!=j:
                                        mega[i]=mega[i]+lista[j]
                                        if mega[i]>limit:
                                                mega[i]=mega[i]-lista[j]
        maxsum=max(mega)
        return maxsum
print ("Εισαγετε μια λιστα απο αποστασεις και υστερα αφου την καταχωρησετε ,καταχωρηστε εναν αριθμο ως οριο αθροισματος των προηγουμενων αποστασεων. Χωριστε τους αριθμους με κενα. ","\n")
lista=[float(x) for x in input("dose lista: ").split()]
limit=float(input("dose orio: "))
maxDistance(lista,limit)
print (maxsum)
input("press enter to continue")

1 个答案:

答案 0 :(得分:0)

在使用mega关键字之前,需要声明变量global。 我建议:

mega = []
maxSum = 0
def foo():
    global mega
    global maxSum
    ...

正如mad_在评论中提到的那样:在您的情况下,如果您不更改变量值,则实际上实际上并不需要global关键字。在函数之前声明它们之后,您可以直接引用它们。