Newbie append() question

Gerard Flanagan grflanagan at yahoo.co.uk
Fri May 19 00:34:37 EDT 2006


Brian Blazer wrote:
> I promise that this is not homework.  I am trying to self teach here
> and have run into an interesting problem.  I have created a method
> that asks for a class name and then is supposed to add it to classes
> [].  Here is a snippet:
>
> def getCurrentClasses():
>          classes = []
>          print 'Please enter the class name. When finished enter D.'
>          while (c != "D"):
>              c = raw_input("Enter class name")
>              if (c != "D"):
>                  classes.append(c)
>
> I have been running this in the interactive interpreter and if I
> print the list I get the string "Enter class name" as the first entry
> in the list and what was supposed to be the first entry as the second
> element like this:
>
> Enter class name: cs1
> ['Enter class name: cs1']
>
> I guess that I assumed that c would be equal to the value entered by
> the user not the prompt string.  It actually looks like it is taking
> the whole thing as one string.  But then if I enter more classes I
> get this:
>
> Enter class name: cs2
> ['Enter class name: cs1', 'cs2']
>
> So with the second and successive inputs, it appends the entered string.
>
> Hopefully someone could enlighten me as to what is going on and maybe
> offer a suggestion to help me figure this one out.
>
> Thank you for your time,
>
> Brian
> brian at brianandkate.com

your code gives me:

    UnboundLocalError: local variable 'c' referenced before assignment

Is this the exact code you ran?

This should work:

def getCurrentClasses():
    classes = []
    print 'Please enter the class name. When finished enter D.'
    c = None
    while (c != "D"):
        c = raw_input("Enter class name")
        if (c != "D"):
            classes.append(c)
    print classes

but you are checking the same condition twice: c!= 'D', which is
unnecessary.Try:

def getCurrentClasses2():
    classes = []
    print 'Please enter the class name. When finished enter D.'
    while True:
        c = raw_input("Enter class name: ")
        if (c != "D"):
            classes.append(c)
        else:
            break
    print classes
    
getCurrentClasses2()

Gerard




More information about the Python-list mailing list