Menu Interface Problem.

Paulo Repreza pxrepreza at gmail.com
Tue Mar 10 06:48:07 CET 2009


Hi all,

I'm having a little problem in my program Menu Interface.

Here is the code:

-----------------------------------------------------------------------------------------------------------------
# Improvement of lists-demolists.py **Includes a MENU interface*

menu_item = 0
list = []

# Program exits until 'menu_item = 9'
while menu_item != 9:
    print '-----------------'
    print '1. Print the list.'
    print '2. Add a name to the list.'
    print '3. Remove a name from the list.'
    print '4. Change an item in the list.'
    print '9. Quit'
    menu_item = input('Pick an item from the menu: ')

    # TO-DO for option '1'.
    if menu_item == 1:
        current = 0
        if len(list) > 0:
            while current < len(list):
                print current,'. ',list[current]
                current = current + 1
        else:
            print 'List is empty.'

    # TO-DO for option '2'.
    elif menu_item == 2:
        name = raw_input('Type in a name to add: ')
        list.append(name)

    # TO-DO for option '3'.
    elif menu_item == 3:
        del_name = raw_input('What name would you like to remove: ')
        if del_name in list:
            item_number =  list.index(del_name)
            del list[item_number]
            # The code above only removes the first occurance of
            # the name. The code below from G removes all.
            # while del_name in list:
            # item_number = list.inder(del_name)
            # del list[item_number]
        else:
            print del_name, 'was not found.'

    # TO-DO for option '4'.
    elif menu_item == 4:
        old_name = raw_input('What name would you like to change: ')
        if old_name in list:
            item_number = list.index(old_name)
            new_name = raw_input('What is the new name: ')
            list[item_number] = new_name
        else:
            print old_name, ' was not found.'

print "Goodbye"

-----------------------------------------------------------------------------------------------------------------------------------------------------

Well the program runs, but my issue it's when I try to enter a letter
instead of a number (I do this to check if I will see the Menu regarding if
I enter a wrong character) but when I enter a character(string) I get this:

--------------------------------------------------------------------------------------------------------
Pick an item from the menu: f
Traceback (most recent call last):
  File "lists-improve-demolists.py", line 14, in <module>
    menu_item = input('Pick an item from the menu: ')
  File "<string>", line 1, in <module>
NameError: name 'f' is not defined
-------------------------------------------------------------------------------------------------------

I've noticed that the 'menu_option; var' it's not a string so that's why I
see this error, but I tryed by doing str(menu_option) and it works, but when
I enter a digit 1, 2, 3, 4, 9 it won't take me to that particular option,
instead it shows the menu all over again and the only way I can exit the
program is by doing ctrl + C.

Any hint on how I can change the code in order for me to use the menu
regarding if is a string or an integer (menu_option)?

Thank You!

Paulo Repreza
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20090309/aea65a7f/attachment.html>


More information about the Python-list mailing list