问题描述
我必须创建一个函数,该函数将找到最小的m
,其中n
是整数。 n=(r/(R-r))*m
我不断收到错误消息:local variable 'n' referenced before assignment.
我在函数开始时尝试使用全局n
,但随后出现错误消息:name 'n' is not defined
我们将不胜感激。谢谢。这是我的代码:
def courbeFerme(R,r):
global n
if (R in range(0,1000)) and (r in range(0,1000)):
m=0
while ((r/(R-r))*m).is_integer()==False:
m+=1
n=(r/(R-r))*m
return n
解决方法
如果您的while
循环的条件在第一次测试中失败,则您永远不会分配给n
,但是您仍然尝试return
。您需要:
- 确保分配总是至少发生一次,或者
- 赋予
n
一个全局范围内的默认值,因此即使您未在函数中为其分配值,它也需要读取。
如果不是global
,则可以使用相同的解决方案,但是在输入函数时必须给它提供默认值。