代码表示赋值前引用的变量?

时间:2013-12-06 22:04:55

标签: python scope

我从代码中收到此错误,“UnboundLocalError:在赋值之前引用的本地变量'最低'”。我为什么要这个?在这种情况下,“在转让前引用”真的意味着什么?因为我认为只有在定义了“得分”变量后才将变量分配给“最低”。任何帮助,将不胜感激。

def main():
        scores = get_score()
        total = get_total(scores)
        lowest -= min(scores)
        average = total / (len(scores) - 1)
        print('The average, with the lowest score dropped is:', average)


def get_score():
        test_scores = []
        again = 'y'
        while again == 'y':
                    value = float(input('Enter a test score: '))
                    test_scores.append(value)
                    print('Do you want to add another score? ')
                    again = input('y = yes, anything else = no: ')
                    print()
        return test_scores

def get_total(value_list):
        total = 0.0
        for num in value_list:
                    total += num
        return total


main()

3 个答案:

答案 0 :(得分:3)

你正在使用 - =,这需要一个起始值。但是你没有提供起始值。在上下文中,您似乎意味着使用=而不是。

答案 1 :(得分:3)

那是因为在main()中你说的是

lowest -= min(scores)

基本上最低=最低 - 分(分数)。由于您之前没有设置最低值,因此您将收到该错误

答案 2 :(得分:1)

未定义您的最低变量。您使用"最低 - =最小(分数)"这意味着从最低值中减去最小值(分数),但尚未存在最低值。基于我想猜测的变量的名称:

def main():
    scores = get_score()
    total = get_total(scores)
    lowest = min(scores)
    average = total / (len(scores) - 1)
    print('The average, with the lowest score dropped is:', average)