Thanks Evert for pointing out the difference and the discussion on global variables, it helped.
/Robert -----Ursprungligt meddelande----- Från: Evert Rol [mailto:evert....@gmail.com] Skickat: den 30 maj 2010 18:34 Till: Robert Johansson Kopia: tutor@python.org Ämne: Re: [Tutor] namespaces Hi Robert > This code generates the message "UnboundLocalError: local variable 'doubles' > referenced before assignment" (line: if d[0] == d[1] and doubles == 2:) > > http://pastebin.com/mYBaCfj1 > > I think I have a fair picture of what it means but I would be very happy if > someone could explain the difference between the two variables h and doubles > in the code. Why is one accessible from the function but not the other? I > looked into rules for namespaces but I'm still confused. Below is another > sample of the code You assign a value to doubles in the roll() function, making Python think doubles is a local variable (which hasn't been assigned anything when you first use it, throwing the exception). If you assign some value to h after the first line in roll() (eg, h = 6), you'd get the same exception, but then for h. So, if you assign a value to a variable inside a function() and you want that variable to be the global one (instead of the implicitly assumed local one), you'll have to explicitly tell Python that: "global doubles" (probably on the first line in the function). Since you hadn't assigned any value to h inside roll(), only used it, Python assumes it's the global one. See also the second answer to this question: http://stackoverflow.com/questions/423379/global-variables-in-python Hope that helps, Evert > > Cheers, Robert > > from random import * > > h = 6 > doubles = 0 # current number of consecutive doubles > > def roll(): > d = [randint(1, h), randint(1, h)] > if d[0] == d[1] and doubles == 2: > doubles = 0 > return 0 > elif d[0] == d[1] and doubles < 2: > doubles += 1 > return sum(d) > else: > return sum(d) > > for n in range(10): > d = roll() > print d > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor