你能把一个变量变成一个方程以便求解吗?
一个简单的例子是
equ = "23/(n+2)"
for n in range(2):
ans = equ
print ans
这返回
23/(n+2)
23/(n+2)
而不是想要的
11.5
7.667
You could use SymPy for this:
from sympy import sympify, Symbol
equ = "23/(n+2)"
equ_ = sympify(equ)
n_ = Symbol('n')
for n in range(2):
print equ_.subs({n_: n}).evalf()
注意:eval 真的很危险。
你可以使用eval()
:
equ = "23/(n+2)"
for n in range(2):
ans = equ
print eval(ans)
请注意,这将在 Python 2(分别为 11 和 7)中给出不正确的结果。在 Python 3 中,它会给出正确的结果。你可以在 Python 2 中通过确保至少一个涉及的数字不是整数来解决这个问题:
equ = "23.0/(n+2)"
for n in range(2):
ans = equ
print eval(ans)