Quoting Ismael Garrido <[EMAIL PROTECTED]>: > (Newbie looking scared) That's kind of hard for me... Parsing it myself > is too complex for me. Also, I hoped Python's math would do the job for > me, so I wouldn't have to make what's already done in Python.
Writing (and understanding) grammar is probably easier than you think --- once you get over the syntax. And they are fantastically useful things for doing any sort of parsing. But no matter.. > For what I understood of Mr. Clarke's mail, eval() would do the job (in > spite of the security problem, I'm not concerned about that). Is that > correct? I guess I'll go read about that a bit more. Yeah, probably. For example: >>> from math import * >>> x = 3 >>> y = 2 >>> eval("2*x + 3*sin(x + y)") 3.1232271760105847 Note that if I had done "import math" instead of "from math import *", it would not have worked, because "sin" would not have been defined. So you could do something like: def evalAt(function, x): """ Evaluate a function (as a string) at a given point. """ return eval(function) # This is equivalent to: evalAt = lambda function, x: eval(function) myFun = "2*x + 3*sin(x + y)" evalFunction = lambda x: evalAt(myFun, x) xPoints = [x / 10000.0 for x in xrange(10000)] yPoints = map(evalFunction, xPoints) One problem with this approach is that you are required to use 'x' as the variable when you are typing in your function. Oh, to answer your other question: It is almost certainly better to calculate the points first, and then plot them. -- John. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor