Reading and running a mathematical expression in Python
Question: Using Python, how would I go about reading in (be from a string, file or url)
a mathematical expression (1 + 1 is a good start) and executing it?

Aside from grabbing a string, file or url I have no idea of where to start
with this.


Answer: Because python supports some algebraic forms, you could do:

    
    
    eval("1 + 1")
    

But this allows the input to execute about anything defined in your env:

    
    
    eval("__import__('sys').exit(1)")
    

Also, if you want to support something python doesn't support, the approach
fails:

    
    
    x³ + y² + c
    ----------- = 0
         z
    

Instead of doing this, you can implement a tokenizer and a parser with
[ply](http://www.dabeaz.com/ply/). Evaluating a thing like '1 + 1' ought not
take more than ten lines or so.

You could also implement the tokenizer and the parser by hand. Read about LL
and LR parsers. Before attempting this it's also better to learn using parser
generators first.

