繁体   English   中英

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

[英]How to fix “global name is not defined” in my code

我在函数中给出一个列表,该列表接受数字并尽可能多地添加,以便返回可能较小或什至极限的较高总和

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM