Connecting Tech Pros Worldwide Forums | Help | Site Map

Solving Python guessing number game

Newbie
 
Join Date: Nov 2008
Posts: 3
#1: Nov 17 '08
I'm able to create a guessing number game, but I can limit the amount of guesses to less than 3. Can someone tell me what i'm doing wrong?

Expand|Select|Wrap|Line Numbers
  1. # Guess My Number
  2. # The computer picks a random number
  3.  
  4. import random
  5. print "\tWelcome to 'Guess my number'!:"
  6. print "\nI'm thinking of a number between 1 and 100."
  7. print "Try to guess it in as few attempts as possible.\n"
  8.  
  9. #set the initial values
  10. the_number = random.randrange(100) + 1
  11. guess = int(raw_input("Take a guess: "))
  12. tries = 1
  13.  
  14. # guessing loop
  15.  
  16. while (guess != the_number):
  17.     if (guess > the_number):
  18.         print "Lower..."
  19.     else:
  20.         print "Higher..."
  21.  
  22.     guess = int(raw_input("Take a guess: "))
  23. if tries > 3:
  24.     print "You have more than 3 attempts, game over."
  25.     tries += 1
  26.  
  27. else:
  28.     print "You guessed it! The number was", the_number
  29.     print "And it only took you", tries, "tries!\n"
  30.  
  31.  
  32.  
  33. raw_input ("\n\nPress the enter key to exit.")

Expert
 
Join Date: Sep 2007
Posts: 856
#2: Nov 17 '08

re: Solving Python guessing number game


Please wrap your code in CODE tags so that the indentation doesn't get stripped out.

It looks like you only update tries when it's greater than three. Your idea would work, but you also can't have

Expand|Select|Wrap|Line Numbers
  1. if: 
  2.     code
  3. code
  4. else:
  5.     code
  6.  
because Python won't know to associate the else with the if (can't tell since the parser here rips indentation out). Put the tries update someplace else to fix that.
bvdet's Avatar
Moderator
 
Join Date: Oct 2006
Location: Nashville, TN
Posts: 1,563
#3: Nov 17 '08

re: Solving Python guessing number game


Quote:

Originally Posted by dseto200

I'm able to create a guessing number game, but I can limit the amount of guesses to less than 3. Can someone tell me what i'm doing wrong?

Expand|Select|Wrap|Line Numbers
  1. # Guess My Number
  2. # The computer picks a random number
  3.  
  4.  
  5.  
  6. import random
  7. print "\tWelcome to 'Guess my number'!:"
  8. print "\nI'm thinking of a number between 1 and 100."
  9. print "Try to guess it in as few attempts as possible.\n"
  10.  
  11. #set the initial values
  12. the_number = random.randrange(100) + 1
  13. guess = int(raw_input("Take a guess: "))
  14. tries = 1
  15.  
  16. # guessing loop
  17.  
  18. while (guess != the_number):
  19.     if (guess > the_number):
  20.         print "Lower..."
  21.     else:
  22.         print "Higher..."
  23.  
  24.     guess = int(raw_input("Take a guess: "))
  25. if tries > 3:
  26.     print "You have more than 3 attempts, game over."
  27.     tries += 1
  28.  
  29. else:
  30.     print "You guessed it! The number was", the_number
  31.     print "And it only took you", tries, "tries!\n"
  32.  
  33.  
  34.  
  35. raw_input ("\n\nPress the enter key to exit.")

I made a few changes to your code. The statement to get guess is now inside the loop. Variable tries is incremented after the guess. The if statement that checks for high or low was modified: if >, elif<, else(must be correct guess). If tries == max_guesses, the game is over. Encapsulate the code in a function. Use return to exit the while loop.
Expand|Select|Wrap|Line Numbers
  1. import random
  2. print "\tWelcome to 'Guess my number'!:"
  3. print "\nI'm thinking of a number between 1 and 100."
  4. print "Try to guess it in as few attempts as possible.\n"
  5.  
  6. def guess_num(num, max_guesses):
  7.     # guessing loop
  8.     tries = 0
  9.     while True:
  10.         guess = int(raw_input("Take a guess: "))
  11.         tries += 1
  12.         if guess > num:
  13.             print "Lower..."
  14.         elif guess < num:
  15.             print "Higher..."
  16.         else:
  17.             print "You guessed it! The number was", num
  18.             print "And it only took you %d tr%s!\n" % (tries, ['ies', 'y'][tries==1 or 0])
  19.             return
  20.  
  21.         if tries == max_guesses:
  22.             print "You have had %d guesses. Game over." % max_guesses
  23.             return
  24.  
  25. the_number = random.randrange(1,101)
  26. max_guesses = 3
  27. guess_num(the_number, max_guesses)
  28.  
  29. raw_input ("\n\nPress the enter key to exit.")
Newbie
 
Join Date: Nov 2008
Posts: 3
#4: Nov 17 '08

re: Solving Python guessing number game


Thanks bvdet. The book "Python Programming second edition hasn't shown the "def" command yet.
The original exercise - Modify this program so the player has a limited number of guesses. The chp covers import random, randomrange, while loop, while true, if, if-else loop and if elif loop. Is there a way I can do with the def command?
Newbie
 
Join Date: Nov 2008
Posts: 3
#5: Nov 17 '08

re: Solving Python guessing number game


The original exercise modify this program to limit the amount of guesses.
Chapter covers if, if-else, if-elif, if-elif-else, while, while True, import random, randrange(), raw_input and comparison operators. How can I do it without using the def command.
Original exercise that I have to modify listed below.

Expand|Select|Wrap|Line Numbers
  1. # Guess My Number
  2.  
  3. # The computer picks a random number
  4. #  The player tries to guess it and the computer lets
  5. #  The player know if the guess is too high, too low
  6. #  or right on the money
  7.  
  8. import random
  9.  
  10. print "\tWelcome to 'Guess my number'!:"
  11. print "\nI'm thinking of a number between 1 and 100."
  12. print "Try to guess it in as few attempts as possible.\n"
  13.  
  14. #set the initial values
  15. # the_number = random.randrange(100) + 1
  16. # guess = int(raw_input("Take a guess: "))
  17. # tries = 1
  18. #  
  19. # # guessing loop
  20.  
  21. while (guess != the_number):
  22.    if (guess > the_number):
  23.    print "Lower..."
  24.    else:
  25.    print "Higher..."
  26.  
  27. guess = int(raw_input("Take a guess: "))
  28.  
  29. tries += 1
  30.  
  31. print "You guessed it! The number was", the_number
  32. print "And it only took you", tries, "tries!\n"
  33.  
  34.  raw_input ("\n\nPress the enter key to exit.")
bvdet's Avatar
Moderator
 
Join Date: Oct 2006
Location: Nashville, TN
Posts: 1,563
#6: Nov 17 '08

re: Solving Python guessing number game


Could you clarify what your problem or question is?
boxfish's Avatar
Expert
 
Join Date: Mar 2008
Location: California
Posts: 478
#7: Nov 18 '08

re: Solving Python guessing number game


Quote:

Originally Posted by bvdet

Could you clarify what your problem or question is?

dseto's programming course hasn't covered functions yet.
Quote:

Originally Posted by dseto200

The original exercise modify this program to limit the amount of guesses.

Just modify the condition in the while-loop so that the loop also stops when the number of tries is too high. You'll need the and operator.
Newbie
 
Join Date: Nov 2008
Posts: 1
#8: Nov 21 '08

re: Solving Python guessing number game


Hi, I've taken a look at your code and your on the right track. Remember loops are an extremely important part of any program especially one like this. Below is a working guess the number game that requires you to input the number of max tries when you call the function.

Expand|Select|Wrap|Line Numbers
  1. #! /usr/bin/env python
  2.  
  3. # Guess the number game
  4.  
  5. import random
  6.  
  7. def main(max):
  8.     print "\tWelcome to 'Guess my number'!"
  9.     print "\nI'm thinking of a number between 1 and 100."
  10.     print "Try to guess in as few attempts as possible.\n"
  11.     num = random.randrange(101)
  12.     tries = 0
  13.     guess = ""
  14.     while guess != num:
  15.         guess = int(raw_input("Take a guess: "))
  16.         if guess > num:
  17.             print "Too high."
  18.         elif guess < num:
  19.             print "Too low."
  20.         tries += 1
  21.         if tries >= max:
  22.             print "Sorry, you took too many guesses. Game Over"
  23.             exit()
  24.     print "Congratulations!"
  25.     again = raw_input("To play again press Enter. Type anything else to quit.")
  26.     if again == "":
  27.         main()
  28.     else:
  29.         exit()
  30.  
  31. main(3)
  32.  
The business part of this code is lines 14-23. thats the important while loop that keeps the game going. As you can see it will keep iterating while the variable 'guess' does not equal variable 'num' (while guess != num:)

This code doesnt have any try-except statements or any error checking for user input or anything like that but it is working. If you need any additional explanation please post again. Thanks

Bodsda
Reply