Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > UnboundLocalError - code is short & simple

Reply
Thread Tools

UnboundLocalError - code is short & simple

 
 
pylearner
Guest
Posts: n/a
 
      09-28-2009
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
 
Reply With Quote
 
 
 
 
Francesco Bochicchio
Guest
Posts: n/a
 
      09-28-2009
On Sep 28, 6:07*am, pylearner <(E-Mail Removed)> 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
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
UnboundLocalError with extra code after return Rich Healey Python 4 09-30-2009 05:02 AM
UnboundLocalError - (code is short & simple) pylearner Python 2 09-28-2009 08:24 AM
why UnboundLocalError? Alex Gittens Python 6 07-09-2005 04:56 PM
HELP:UnboundLocalError: local variable '_nntp' referenced before assignment Peter Moscatt Python 2 03-19-2005 08:37 AM
UnboundLocalError on shadowed import Brad Clements Python 3 06-30-2004 12:15 PM



Advertisments