为什么我会收到 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 错误代码?你必须做出决定。
我得到的错误是:
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 错误代码?你必须做出决定。