On 2006-06-02 19:25:28 -0400, John Machin <[EMAIL PROTECTED]> said: > Thanks for the reply John. I seem to be getting all the same problems > with your code that I had with mine so it may be an issue with Python > on this computer though I haven't had one prior to now. I'm running it > on OSX Tiger so I'll give it a shot on my Windows box. With pythons > portability I didn't think it would be an issue so didn't mention it in > the post.
The different problems I was having was a result of moving some of the code around thinking I had messed up and trying to fix it. The code I posted was just running but never stopping to give the the output. Thanks for explaining about getting a new value for flip, I wasn't positive about that and you really helped clear up any confusion I was having. Rob > > This can't happen with the code that you posted. It *could* happen if > the statement count += 1 was not being executed once each time around > the while loop -- like if it was *not* indented. > > # Bad code #1 > import random > flip = random.randrange(2) > heads = tails = count = 0 > while count < 100: > if flip == 0: > heads += 1 > else: > tails += 1 > count += 1 > print "The coin landed on heads", heads, 'times ' \ > "and tails", tails, 'times' > >> A few times I would get it to print 'heads 0 (or 1) times and tails 1 >> (or 0) times' 100 times. > > Again, can't happen with the code you have posted. If it is printing > 100 times, that would be because you have indented the print statement > so that it is being executed once each trip around the loop. > > # Bad code #2 > import random > flip = random.randrange(2) > heads = tails = count = 0 > while count < 100: > if flip == 0: > heads += 1 > else: > tails += 1 > count += 1 > print "The coin landed on heads", heads, 'times ' \ > "and tails", tails, 'times' > >> >> Here's the code I wrote: >> >> import random >> >> flip = random.randrange(2) >> heads = 0 >> tails = 0 >> count = 0 >> >> while count < 100: > > To help you see what is happening, insert a print statement here; e.g.: > print flip, count, heads, tails >> >> if flip == 0: >> heads += 1 >> else: >> tails += 1 >> >> count += 1 >> >> print "The coin landed on heads", heads, 'times ' \ >> "and tails", tails, 'times' >> > > The code that you posted sets flip only once i.e. only 1 toss, not 100. > If it is 0, you get 100 heads and 0 tails. Otherwise you get 0 heads > and 100 tails. You need to get a new value for flip each trip. > > # Not quite so bad code > import random > heads = tails = count = 0 > while count < 100: > flip = random.randrange(2) > # print flip, count, heads, tails # un-comment as/when required :-) > if flip == 0: > heads += 1 > else: > tails += 1 > count += 1 > print "The coin landed on heads", heads, 'times ' \ > "and tails", tails, 'times' > > HTH, > John -- http://mail.python.org/mailman/listinfo/python-list