我使用的是 python 3.5。
因此,我尝试创建一个函数,将 x 和 y 作为正浮点输入,然后计算并返回 R = x - N * y,其中 N 是最大整数,因此 x > N * y。
我做了这个功能:
def floatme(x,y):
N = 1
while x <= N * y:
R = x - N * y
N = N+1
return R
但是在运行我的函数时,我收到以下错误:
UnboundLocalError:赋值前引用局部变量“R”
我四处搜索,发现当函数中已分配的变量已在函数外部分配时,就会发生这种情况。但我的函数并非如此,所以我不明白为什么Python会提示?
最佳答案
R
在 while
循环内定义。如果 while
循环的条件最初不为 true,则其主体永远不会执行,并且 R
永远不会定义。那么尝试返回 R
就会出错。
要解决此问题,请在进入循环之前将 R
初始化为某个值。
如果不进入循环是一个错误条件,即调用者不应传入导致问题开始的值,则使用 try
捕获 UnboundLocalError
>/except
结构并引发更合适的异常(例如 ValueError
)。
关于python - While循环: UnboundLocalError: local variable referenced before assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39990133/