[Tutor] Beginner - explaining 'Flip a coin' bug
Alan Gauld
alan.gauld at btinternet.com
Wed Feb 12 20:05:52 CET 2014
On 12/02/14 15:25, Marc Eymard wrote:
> However, I still don't understand the bug since, in my understanding,
> both files are incrementing variable *count_flips* each time until the
> loop becomes false.
> count_heads = 0
> count_tails = 0
> count_flips = 0
>
> while count_flips != 100:
This is usually a bad idea since if count_flips gets
incremented by 2 it could go over 100 and this test
will still be true and it will loop forever...
(see below).
Its better to have a test like:
while count_flips <100:
> coin_side = random.randint(1,2)
>
> if coin_side == 1:
> count_heads += 1
> count_flips += 1
> else: count_tails += 1
>
> count_flips += 1
Because this is outside the else block it gets incremented
twice every time a 1 gets 'thrown'. (see above)
That's why your solution of incrementing only once before
the if/else tests is better. Its a more accurate implementation
of the logic and avoids the double increment problem with
the while loop.
HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos
More information about the Tutor
mailing list