calculating a string equation

Arnaud Delobelle arnodel at googlemail.com
Thu Feb 11 16:50:00 EST 2010


Astan Chee <astan.chee at al.com.au> writes:

> Hi,
> I have some variables in my script that looks like this:
> vars = {'var_a':'10','var_b':'4'}
> eqat = "(var_a/2.0) <= var_b"
> result = "(var_a+var_b)/7"
> What I'm trying to do is to plug in var_a and var_b's values from vars
> into eqat and see if eqat returns true or false as well as getting the
> value of result if these variables were "plugged in". How do I do
> this?
> I'm also expecting eqat and result to contain various python
> mathematical operators like **, and compounded ()'s.
> I'm not sure how to convert the equation; if I have to make a bunch of
> if-statements or if there is a python function that already does
> something like this.

Yes: eval()

>>> vars = {'var_a':10 ,'var_b':4}
>>> eqat = "(var_a/2.0) <= var_b"
>>> result = "(var_a+var_b)/7"
>>> eval(eqat, vars)
False
>>> eval(result, vars)
2

(Note that I have slightly modified your vars dictionary)
See a recent thread about the dangers of eval().

-- 
Arnaud



More information about the Python-list mailing list