gpt4 book ai didi

python - 向间隔添加一个时出错

转载 作者:太空宇宙 更新时间:2023-11-03 15:51:06 25 4
gpt4 key购买 nike

这是我的代码:

from sympy.solvers import nsolve
from sympy import Symbol

def solver(I):
return nsolve(x-3*(1-2.73**-x), I, verify=False)

i_min=-51
i_max=100
z=0
x = Symbol('x')
for i in range(i_min,i_max):
y=z
z=solver(i)
if y!=z: continue
print(z)

当我运行它时,它按预期工作。但是,如果我将 i_min 更改为 -52,它不起作用,我得到:

UnboundLocalError: local variable 'x' referenced before assignment

梳理有关此错误的其他答案,我发现大多数建议使用全局变量。但是到目前为止,我尝试过的任何全局变量声明都没有用。非常感谢任何帮助。

编辑:这是整个日志:

UnboundLocalError                         Traceback (most recent call 
last)
<ipython-input-3-1dfdd15c7bf8> in <module>()
11 for i in range(i_min,i_max):
12 y=z
---> 13 z=solver(i,x)
14 if y!=z: continue
15 print(z)

<ipython-input-3-1dfdd15c7bf8> in solver(I, x)
3
4 def solver(I,x='x'):
----> 5 return nsolve(x-3*(1-2.73**-x), I, verify=False)
6
7 i_min=-55

/home/... in nsolve(*args, **kwargs)
2752
2753 f = lambdify(fargs, f, modules)
-> 2754 return findroot(f, x0, **kwargs)
2755
2756 if len(fargs) > f.cols:

/home... in findroot(ctx, f, x0, solver, tol, verbose, verify,
**kwargs)
965 if error < tol * max(1, norm(x)) or i >= maxsteps:
966 break
--> 967 if not isinstance(x, (list, tuple, ctx.matrix)):
968 xl = [x]
969 else:

UnboundLocalError: local variable 'x' referenced before assignment

最佳答案

只需将x 作为参数 传递给solver 函数。这样你就不会依赖于 global variables

执行此操作的代码可能类似于:

from sympy.solvers import nsolve
from sympy import Symbol

def solver(I, x):
return nsolve(x-3*(1-2.73**-x), I, verify=False)

i_min=-51
i_max=100
z=0
x = Symbol('x')
for i in range(i_min,i_max):
y=z
z=solver(i, x)
if y!=z: continue
print(z)

关于python - 向间隔添加一个时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46872398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com