calculating a string equation

Astan Chee astan.chee at al.com.au
Sat Feb 20 18:07:32 EST 2010


Arnaud Delobelle wrote:
> 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
Hi,
I now have a slight problem with this. This doesnt seem to work:
 >>> vars = {'var a':10 ,'var b':4}
 >>> eqat = "(var a/2.0) <= var b"
 >>> eval(eqat, vars)

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    eval(eqat, vars)
  File "<string>", line 1
    (var a/2.0) <= var b
         ^
SyntaxError: invalid syntax

So eval can't take spaces? is there a way to go around this?
Thanks again for any suggestions
Cheers
Astan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100221/63409e6c/attachment.html>


More information about the Python-list mailing list