"Jones, Lawrence D" <lawrence.jo...@imperial.ac.uk> wrote
My code is below. But can someone please explain to me why the following variable has to be placed where it is

Others have explained about variable creation and the fact you need to be inside the loop to get different results for each iteration.

               coin = random.randrange(2)

I just want to pick up on something you said.
You asked about the "variable".
The variable is "coin". It can go anywhere before the point of use, even the first line of your code. You could have done

coin = None or coin = 0 and it would work just fine.

What needs to be inside the loop is the call to the randrange() function. That is what is simulating the coin flip. So you need to distinguish the difference between variable creation (which in Python happens by means of the first assignment of a value) and function application (where you call a function and assign its return value to a variable.) In your code you create the variable coin at the same time as you apply the function, but you could have done those two things separately and the code would still work.

It might seem like I'm splitting hairs but it starts to make a difference in some other cases, like this:

while True:
   coin = coin + someFunction()

This will raise an error because you are using the value of coin (on the right hand side) before it has been created. You need to write it like this:

coin = 0
while True
   coin = coin + someFunction()

It is very important in programming to be clear in your mind about these different concepts, especially when deciphering error messages.

HTH,

--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to