Evaluate the source in the context of globals and locals.
The source may be a string representing a Python expression
or a code object as returned by compile().
The globals and locals are dictionaries, defaulting to the current
globals and locals. If only globals is given, locals defaults to it.

locals and globals are Python's scopes, like in a lot of languages. Though both are implimended as Python dictionaries; the global namespace holds names that are vistable from all over your your program. Locals on the other hand are visable only from within the function (first member class) or class. If you know C# these should be pretty familier consepts .

Hereinbelow is the python code (simplified version).
It works just fine without psyco...
(sorry, I don't know how to keep the indentation when pasting the text...)
By the way, I don't know c# exactly. I'm just trying to learn all at once in my scarce spear time (python, c#, php)...

Ok, from what I can see (and not being able to test the script right now) psyco is just giving you a helpful little hint about using input() in your methods - which is infact a shortcut for eval(raw_input()).

Try changing input() to int(raw_input()) and you shouldn't see the warning anymore. You may need to wrap these in a try-except block to catch any ValueError resulting in a user entering a string or expresion instead of a number.

Good luck with the learning, i'm sure you'll do fine though you might want to take a little time to master one before you move onto the other or you'll end up comfused .

Its probably worth mentioning again that this isn't an error it's actually a warning. You should look though the Python docs about warnings, usually a good read . There is even a way to turn them off! There should be a few examples on the forum if you have a quick search.