On Sep 28, 6:07 am, pylearner <for_pyt...@yahoo.com> wrote: > System Specs: > > Python version = 2.6.1 > IDLE > Computer = Win-XP, SP2 (current with all windows updates) > > ---------------------------------------------------------------------------------------- > > Greetings: > > I have written code for two things: 1) simulate a coin toss, and 2) > assign the toss result to a winner. Code for the simulated coin toss > is in a file named "coin_toss.py." Code for the assignment of the > toss result is in a file named "toss_winner.py." Each file has one > simple function: 1) coin_toss(), and 2) toss_winner(), respectively. > (The code for each file is listed below.) > > Problem: > > I am getting an error when I run "toss_winner.py." > > Error Message: > > Traceback (most recent call last): > File "<pyshell#2>", line 1, in <module> > toss_winner() > File "C:/Python26/toss_winner.py", line 7, in toss_winner > coin_toss = coin_toss() > UnboundLocalError: local variable 'coin_toss' referenced before > assignment > > Question #1: > > After reviewing the code below, does anybody know why I am getting > this error? > > Explanation: > > As I understand, the first statement of the toss_winner() function > body -- i.e. "coin_toss = coin_toss()" -- causes four things to > happen: 1) the coin_toss() function is called, 2) the coin_toss() > function is executed, 3) the coin_toss() function returns the value of > its local "coin_toss" variable, and 4) the returned value of the "coin > toss" variable that is local to the coin_toss() function is assigned > to the "coin toss" variable that is local to the toss_winner() > function. > > Given this understanding, it seems I should NOT be getting a > "referenced before assignment" error, involving the "coin_toss" local > variable of "toss_winner()." > > Note: > > I am new to programming and Python. I'm currently self-studying > "Python Programming: An Intro to Computer Science" by Zelle. > > Thanks! > > --------------------------------------------------------------- > > # toss_winner.py > > from coin_toss import coin_toss > > def toss_winner(): > > coin_toss = coin_toss() > > if coin_toss == "Heads": > toss_winner = "Player A" > print 'From "toss_winner" function >>', > print "Toss Winner = " + str(toss_winner) > > else: > toss_winner = "Player B" > print 'From "toss_winner" function >>', > print "Toss Winner = " + str(toss_winner) > > return toss_winner > > --------------------------------------------------------------- > > # coin_toss.py > > from random import random > > def coin_toss(): > > random_number = random() > > if random_number < .5: > > coin_toss = "Heads" > > print 'From "coin_toss" function >>', > print "Toss result = " + str(coin_toss) > > else: > > coin_toss = "Tails" > > print 'From "coin_toss" function >>', > print "Toss result = " + str(coin_toss) > > return coin_toss
You should not use the same name (e.g. coin_toss ) for the function and the variable. Change one of the two, and things will go better. Ciao ------ FB -- http://mail.python.org/mailman/listinfo/python-list