[Tutor] Giving a name to a function and calling it, rather than calling the function directly

lists lists at justuber.com
Sat Sep 4 16:14:37 CEST 2010


Hi folks,

I'm new to Python, I'm working my way through some intro books, and I
have a question that I wonder if someone could help me with please?

This is my attempt at solving an exercise where the program is
supposed to flip a coin 100 times and then tell you the number of
heads and tails.

ATTEMPT 1 returns:

The coin landed on tails 100 times

The coin landed on heads 0 times

ATTEMPT 2 returns:

The coin landed on tails 75 times

The coin landed on heads 25 times

I expected to see the result in attempt 2. I don't fully understand
why the results are different however. Is it because Python only runs
the randint function once when I call it by the name I assigned to it
in attempt 1, but it runs the function fully on each iteration of the
loop in attempt 2? Why are these two things different?

Thanks in advance,

Chris
------------------------------------------------------------------
ATTEMPT 1
------------------------------------------------------------------
import random

heads = 0
tails = 0
tossNo = 0
toss = random.randint(1,2)

while tossNo <= 99:
    if toss == 1:
        heads += 1
        tossNo += 1
    elif toss == 2:
         tails += 1
         tossNo += 1

print "The coin landed on tails " + str(tails) + " times \n"
print "The coin landed on heads " + str(heads) + " times \n"

------------------------------------------------------------------
ATTEMPT 2
------------------------------------------------------------------
import random

heads = 0
tails = 0
tossNo = 0

while tossNo <= 99:
    if random.randint(1,2) == 1:
        heads += 1
        tossNo += 1
    elif random.randint(1,2) == 2:
         tails += 1
         tossNo += 1

print "The coin landed on tails " + str(tails) + " times \n"
print "The coin landed on heads " + str(heads) + " times \n"


More information about the Tutor mailing list