为什么我得到unboundLocalError?

时间:2017-04-18 03:12:36

标签: python local

我得到的错误是:

  

UnboundLocalError:赋值前引用的局部变量?

代码:

def menu_option(index, count):
        import random
        random_number1 = random.randrange(1,31)
        random_number2 = random.randrange(1,31)
        if index == 1:
           problem = random_number1 + random_number2
        elif index == 2:
             problem = random_number1 - random_number2
        elif index == 3:
             problem = random_number1 * random_number2
        elif index == 4:
             problem = random_number1 // random_number2
        elif index == 5:
             problem = random_number1 % random_number2
        user_solution = get_user_solution(problem)
        return check_solution(user_solution, solution, count)

3 个答案:

答案 0 :(得分:0)

在最后一行return check_solution(user_solution, solution, count) solution变量未定义

答案 1 :(得分:0)

喜欢Himanshu说这是因为你使用了一个变量solution,你还没有完成任何任务。所以在这种情况下,如果不是python在函数内部查找它,它将在全局中查找它。如果它在使用之前没有找到它的任何赋值它会引发UnboundLocalError,变量problem也被限制在if块中,所以我认为它不能在外面访问。因此,在嵌套if块之前为problem分配一些值,并在函数传递之前检查solution变量应该分配的内容。

答案 2 :(得分:0)

if/elif/elif ...的链条假设没有满足这些条件?然后未分配problem。但您尝试在user_solution = get_user_solution(problem)中使用它。看起来problem是问题所在。解决方案取决于您的设计在这种情况下应该发生的情况。是否应该使用默认值?举起你自己的例外?返回错误代码?你必须决定。