> On 9/4/2010 10:14 AM, lists wrote: >> >> 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 >> > You should have only 1 call to randint in the loop >> >> while tossNo<= 99: >> if random.randint(1,2) == 1: >> heads += 1 >> tossNo += 1 >> else: >> tails += 1 >> tossNo += 1 >> >> print "The coin landed on tails " + str(tails) + " times \n" >> print "The coin landed on heads " + str(heads) + " times \n" > > You can also simplify: > > import random > heads = 0 > tosses = 100 > for i in range(tosses): > heads += random.randint(0,1) > print "The coin landed on tails " + str(tosses - heads) + " times \n" > print "The coin landed on heads " + str(heads) + " times \n" > > Or even simpler: > > import random > tosses = 100 > heads = sum(random.randint(0,1) for i in range(tosses)) > print ... > > > -- > Bob Gailer > 919-636-4239 > Chapel Hill NC >
Thanks again all! Hopefully as I learn more I'll find it easier to make the most efficient design choices :-) Chris _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor