UnboundLocalError - (code is short & simple)

2009-09-27 Thread pylearner
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."  The error message
is listed below.

Question #1:

Why am I getting this error?

Explanation:

As I understand it, 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!

---

Traceback (most recent call last):
  File "", line 1, in 
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

---

# 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
-- 
http://mail.python.org/mailman/listinfo/python-list


UnboundLocalError - code is short & simple

2009-09-27 Thread pylearner
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 "", line 1, in 
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
-- 
http://mail.python.org/mailman/listinfo/python-list