P
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 "<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
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