python - While循环: UnboundLocalError: local variable referenced before assignment

标签 python python-3.x

我使用的是 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会提示?

最佳答案

Rwhile 循环内定义。如果 while 循环的条件最初不为 true,则其主体永远不会执行,并且 R 永远不会定义。那么尝试返回 R 就会出错。

要解决此问题,请在进入循环之前将 R 初始化为某个值。

如果不进入循环是一个错误条件,即调用者不应传入导致问题开始的值,则使用 try 捕获 UnboundLocalError >/except 结构并引发更合适的异常(例如 ValueError)。

关于python - While循环: UnboundLocalError: local variable referenced before assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39990133/

相关文章:

java - 如何在一个 jar 中分发包含 jython 代码的 java 包?

python-3.x - http.client.ResponseNotReady : Idle

python - 如何使用 python 加入列中的 csv 和求和值

GdkPixBuf 的 Python 导入显示 "introspection typelib not found"

python - ConfigObj/ConfigParser 与为 Python 设置文件使用 YAML

python - 使用键列表从 Python 字典中收集值

python - Pyspark MapReduce - 如何获取元组列表中的出现次数

python - 如何拆分嵌套列表的定义元素

python - 在 Python 中处理数据的首选方式是什么?

集成在 GTK3/PyGObject 中的 Python 网络/tcp 包