On 09/12/2012 12:56 PM, Jabba Laci wrote: > Thanks for the answers. I decided to use numbers in the name of the > functions to facilitate function calls. Now if you have this menu > option for instance: > > (5) install mc > > You can type just "5" as user input and step_5() is called > automatically. If I use descriptive names like install_java() then > selecting a menu point would be more difficult. And I don't want users > to type "java", I want to stick to simple numbers. > > Laszlo
Many of the other answers were interesting and useful, but I don't think anyone else pointed out the real problem with your code. If you have a bunch of functions defined in one place, and a bunch of choices for the user defined in another, you need to make one place which maps them all together. That way, when you define a new function, you also define the part of the menu that tells the user what to type. For example, you might make a list like the following: CHOICES = [("install mc", install_mc), ("install java", install_java), ....etc.... ] And your input routine will be something like: for index, item in iterate(CHOICES): print "(", index, ")", item[0] choice = int(raw_input()) function = CHOICES[choice][1] This isn't exactly the way i'd do it, and of course it's missing all kinds of error checking. But the point is that adding a new function to the menu only requires one place to "know" the number of the function. And the number is only indirectly known, as the location in the CHOICES. I hope this sparks some ideas. -- DaveA -- http://mail.python.org/mailman/listinfo/python-list