The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.
|
 |
|
Dev Shed Forums
> Programming Languages
> Python Programming
|
Python number guessing game
Discuss Python number guessing game in the Python Programming forum on Dev Shed. Python number guessing game Python Programming forum discussing coding techniques, tips and tricks, and Zope related information. Python was designed from the ground up to be a completely object-oriented programming language.
|
|
 |
|
|
|
|

Dev Shed Forums Sponsor:
|
|
|

January 13th, 2013, 09:31 PM
|
|
Registered User
|
|
Join Date: Jan 2013
Posts: 3
Time spent in forums: 57 m 50 sec
Reputation Power: 0
|
|
|
Python number guessing game
hey all I am a beginner to programming with no prior knowledge whatsoever. I recently got myself ythe hello world book on programming and got to the guessing game problem is everytime I run it i get the high and low answer like your supposed to get but It gives away the answer before 6 turns is up. Just curious if i missed anything. anyway here's the code:
import random
secret = random.randint (1, 99)
guess = 0
tries = 0
print "Ahoy! I'm the Dreaded Pirate Roberts, and I have a secret!"
print "It is a number from 1 to 99. I'll give you 6 tries."
while guess != secret and tries < 6:
guess = int(input("what's yer guess?"))
if guess < secret:
print "Too low, ye scurvy dog!"
elif guess > secret:
print "Too high, landlubber!"
tries = tries + 1
if guess == secret:
print "Avast! Ye got it! Found my secret, ye did!"
else:
print "No more guesses! Better luck next time!"
print "The secret was", secret
any help would be greatly appreciated
|

January 14th, 2013, 04:40 AM
|
|
Contributing User
|
|
Join Date: Nov 2012
Posts: 43
Time spent in forums: 15 h 59 m 28 sec
Reputation Power: 1
|
|
First tip: Use the "code" bbcode tags to wrap around your python code so it doesn't mess up indentation. Indents are a required part of python language so it messes up your script if you don't do that.
Second tip: When you only have one line of code after an 'if' or 'else' statement, you don't need to use an indent. For example,
could be:
Third tip: Instead of saying "tries=tries+1" you can just say "tries+=1"
Ok, all tips aside, try this. Your problem was almost definitely indentation. I can't tell because you didn't post your code properly and it lost all the indents. But you NEED to make sure that last line isn't indented so it runs after the while/else loop.
I also changed it to be (slightly) more efficient. Since you already check if "guess < secret" and "guess > secret", you know if it's NOT both of those, guess IS secret, so you can use an 'if/elif/else' statement like so:
Code:
import random
secret = random.randint (1, 99)
guess = 0
tries = 0
print "Ahoy! I'm the Dreaded Pirate Roberts, and I have a secret!"
print "It is a number from 1 to 99. I'll give you 6 tries."
while guess != secret and tries < 6:
guess = int(input("What's yer guess? "))
if guess < secret:
print "Too low, ye scurvy dog!"
elif guess > secret:
print "Too high, landlubber!"
else: print "Avast! Ye got it! Found my secret, ye did!"
tries+=1
else: print "No more guesses! Better luck next time!"
print "The secret was", secret
As a side note, I just pwned this game six times in a row by guessing always in the middle of my possible range. Bwahaha.
|

January 14th, 2013, 10:46 AM
|
|
Contributing User
|
|
Join Date: May 2009
Posts: 297
  
Time spent in forums: 3 Days 19 h 28 m 48 sec
Reputation Power: 7
|
|
The final if and else should be outside the while loop. i.e. loop and get a guess, then test for, did the loop exit because the number was guessed, or did the user run out of guesses. Also, you have to add one to "tries" whatever the guess.
Code:
import random
secret = random.randint (1, 99)
guess = 0
tries = 0
print "Ahoy! I'm the Dreaded Pirate Roberts, and I have a secret!"
print "It is a number from 1 to 99. I'll give you 6 tries."
while guess != secret and tries < 6:
tries = tries + 1
guess = int(input("what's yer guess?"))
if guess < secret:
print "Too low, ye scurvy dog!"
elif guess > secret:
print "Too high, landlubber!"
if guess == secret:
print "Avast! Ye got it! Found my secret, ye did!"
else:
print "No more guesses! Better luck next time!"
print "The secret was", secret
|

January 14th, 2013, 11:36 AM
|
|
Registered User
|
|
Join Date: Jan 2013
Posts: 3
Time spent in forums: 57 m 50 sec
Reputation Power: 0
|
|
Quote: | Originally Posted by eliskan First tip: Use the "code" bbcode tags to wrap around your python code so it doesn't mess up indentation. Indents are a required part of python language so it messes up your script if you don't do that.
Second tip: When you only have one line of code after an 'if' or 'else' statement, you don't need to use an indent. For example,
could be:
Third tip: Instead of saying "tries=tries+1" you can just say "tries+=1"
Ok, all tips aside, try this. Your problem was almost definitely indentation. I can't tell because you didn't post your code properly and it lost all the indents. But you NEED to make sure that last line isn't indented so it runs after the while/else loop.
I also changed it to be (slightly) more efficient. Since you already check if "guess < secret" and "guess > secret", you know if it's NOT both of those, guess IS secret, so you can use an 'if/elif/else' statement like so:
Code:
import random
secret = random.randint (1, 99)
guess = 0
tries = 0
print "Ahoy! I'm the Dreaded Pirate Roberts, and I have a secret!"
print "It is a number from 1 to 99. I'll give you 6 tries."
while guess != secret and tries < 6:
guess = int(input("What's yer guess? "))
if guess < secret:
print "Too low, ye scurvy dog!"
elif guess > secret:
print "Too high, landlubber!"
else: print "Avast! Ye got it! Found my secret, ye did!"
tries+=1
else: print "No more guesses! Better luck next time!"
print "The secret was", secret
As a side note, I just pwned this game six times in a row by guessing always in the middle of my possible range. Bwahaha. |
I tried everything out the way you said and had everthing indented beforehandbut it says else in red for an error at the last line before you have print like
else:
print "No more guesses! Better luck next time!"
print "The secret was", secret
( won't let me put red in post)
I've even tried elif and if in its place. However i forgot to mention in the above post that the book i am using is 2011 i don't know if that would make a difference or not
|

January 14th, 2013, 09:45 PM
|
|
Registered User
|
|
Join Date: Jan 2013
Posts: 3
Time spent in forums: 57 m 50 sec
Reputation Power: 0
|
|
|
Got it now^^
Quote: | Originally Posted by blackrayne01 I tried everything out the way you said and had everthing indented beforehandbut it says else in red for an error at the last line before you have print like
else:
print "No more guesses! Better luck next time!"
print "The secret was", secret
( won't let me put red in post)
I've even tried elif and if in its place. However i forgot to mention in the above post that the book i am using is 2011 i don't know if that would make a difference or not |
ok i got it now  , thanks very much for taking the time to help,
sorry it took a couple times to get it though. ( as far as the indent when i copy it to site goes, i haven't figured that out yet) thanks again
|
Developer Shed Advertisers and Affiliates
| Thread Tools |
Search this Thread |
|
|
|
| Display Modes |
Rate This Thread |
Linear Mode
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|
|