[Tutor] An unknown error in my program

Joel Goldstick joel.goldstick at gmail.com
Sun Dec 25 11:46:23 CET 2011


On Sun, Dec 25, 2011 at 5:18 AM, daedae11 <daedae11 at 126.com> wrote:
> The following program has an error :
>                                           new += lists[int(j)]+"-";
> UnboundLocalError: local variable 'new' referenced before assignment
>
> But when I put the sentence  " new = '' " in the main() function, the
> program run normally.
>
> Please tell me why?  Isn't variable new in the following program is a global
> variable?
>
> the program is:
> lists = ['zero','one','two','three','four','five','six','seven','eight','nine'];
> new = "";

This new is global to your file.  Within your main() function you can
read the value  of new.

But inside main() you are creating another variable also called new
when you do this:
    new += .....

Your code is trying to add something to a variable that doesn't yet
have a value.  'new' is
a name that is not bound to any value.

You can either move the stuff at the top of your program into main, or
you could pass the outer new
into main as a parameter:    main(new):


>
>
> def main():
>
>     while True:
>         try:
>             iput = int(raw_input('Please input a int(0~1000): '))
>             if not 0<=iput<=1000:
>                 continue
>         except:
>             continue
>         break
>
>     iput = str(iput)
>     for j in iput:
>         new += lists[int(j)]+"-";
>     print new[0:-1];
>
> if __name__ == "__main__":
>     main();
>
> ________________________________
> daedae11
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>



-- 
Joel Goldstick


More information about the Tutor mailing list