为什么我会收到 unboundLocalError?

Why am I getting an unboundLocalError?

我得到的错误是:

UnboundLocalError: local variable referenced before assignment?

代码:

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)

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

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

链条if/elif/elif ...假设none那些条件都满足了?那么problem没有赋值。但是你尝试在user_solution = get_user_solution(problem)中使用它。看起来 problem 是问题所在。解决方案取决于您的设计所说的在这种情况下应该发生什么。是否应该使用默认值?提出你自己的例外? Return 错误代码?你必须做出决定。