Newb ??
Steve Holden
steve at holdenweb.com
Tue Nov 8 22:54:09 EST 2005
Chad Everett wrote:
> Hi all, I am new to the group. Trying to learn Python programming on my
> own. I am working through Michael Dawson's Book Python Programming for the
> absolute beginner.
>
> I am tring to write a program that is a number guessing game. I want to be
> able to give the user 5 tries to guess the number before the program ends.
>
> I get the result that I want when the user misses after the 5th try. But it
> does not go down to my closing statement to end. Rather is askes for
> another guess.
>
> I appreciate any help you can give. If this is not the correct group for
> these types of questions, I apologize and hope that you can direct me to
> another NG.
>
> Thanks,
> Chad
>
> import random
>
> print "\tWelcome to 'Guess my Number'!"
> print "\nI'm Thinking of a Number between 1 and 100."
> print "\nTry to Guess it in as few attempts as possible.\n"
>
> #Set the initial values
> the_number = random.randrange(100) + 1
> guess = int(raw_input("Take a guess:"))
> tries = 1
>
> #Guessing Loop
>
> while (guess != the_number):
> if (guess >the_number):
> print "Lower..."
> else:
> print "Higher..."
> guess = int(raw_input("Take another Guess:"))
> tries +=1
> if tries == 5:
> print "Sorry you lose."
> print "The Correct Number was ", the_number
>
>
> print "You guess correctly!!"
> print "The number was:", the_number
> print "You got it correct in", tries, "tries"
>
> raw_input("Press Enter to exit the program")
>
>
I don't personally think the two possible solutions you've been given
are very pythonic. All you really need to do to get the loop termination
conditions right (he says confidently, and with absolutely no testing at
all) is change the while line to
while guess != the_number and tries <=5:
but there are other things wrong with the program. In "pseudo-code"
(stuff that helps you think about the problem without being able to feed
it into an interpreter) your solution should be
while not guessed and guesses < 5
guess number
if guessed
congratulate user
else
crow and rub user's face in it
At present your code will always tell the user she guessed correctly,
even after it's told her she lost. See if this (tested) rewrite makes
sense to you:
import random
print "\tWelcome to 'Guess my Number'!"
print "\nI'm Thinking of a Number between 1 and 100."
print "\nTry to Guess it in as few attempts as possible.\n"
#Set the initial values
the_number = random.randrange(100) + 1
guess = int(raw_input("Take a guess:"))
tries = 1
#Guessing Loop
while guess != the_number and tries < 5:
if (guess >the_number):
print "Lower..."
else:
print "Higher..."
guess = int(raw_input("Take another Guess:"))
tries +=1
if guess == the_number:
print "You guess correctly!!"
print "The number was:", the_number
print "You got it correct in", tries, "tries"
else:
print "Sorry you lose."
print "The Correct Number was ", the_number
regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC www.holdenweb.com
PyCon TX 2006 www.python.org/pycon/
More information about the Python-list
mailing list