Quoting Ismael Garrido <[EMAIL PROTECTED]>: > I am trying to make a program that will plot functions. For that, I need > to be able to get an input (the function to be plotted) and execute it. > So, my question is, how do I use the input? I have found no way to > convert the string to some kind of executable code.
So you want the user to be able to type something like "f(x) = sin(2*x)" and then your program will plot it --- is that correct? Maybe you could parse it yourself? I have found SimpleParse quite easy to use --- http://simpleparse.sourceforge.net/ . You will need to write your own grammar to describe functions --- something like this, I guess: eqn := fname, '(', varlist, ')=', expr varlist := var, (',', var)* expr := atom, (binop, atom)? atom := var / (fun, '(', expr, ')') / num fun := 'sin' / 'cos' / 'tan' / ... var := char fname := char+ num := digit+ binop := '+' / '*' / '/' / '-' char := [a-zA-Z] digit := [0-9] although you will need to work on that to get the precedence right and avoid undesired recursion and the like. SimpleParse will give you a tree (made of nested tuples) representing your function. You can then have a go at converting the tree to a function. I guess the standard way to do this would be something like: def convert(node): functionName = node[0] children = node[1] if functionName == '*': return convert(children[0]) * convert(children[1]) elif functionName == '+': ... But you may be able to come up with something more clever. Hope this helps. -- John. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor