### Thread: Python number guessing game

1. No Profile Picture
Registered User
Devshed Newbie (0 - 499 posts)

Join Date
Jan 2013
Posts
3
Rep 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
2. No Profile Picture
Contributing User
Devshed Newbie (0 - 499 posts)

Join Date
Nov 2012
Posts
43
Rep Power
3
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,
Code:
```if x=1:
print x```
could be:
Code:
`if x==1: print x`

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.
3. No Profile Picture
Contributing User
Devshed Novice (500 - 999 posts)

Join Date
May 2009
Posts
530
Rep Power
34
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```
4. No Profile Picture
Registered User
Devshed Newbie (0 - 499 posts)

Join Date
Jan 2013
Posts
3
Rep Power
0
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,
Code:
```if x=1:
print x```
could be:
Code:
`if x==1: print x`

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
5. No Profile Picture
Registered User
Devshed Newbie (0 - 499 posts)

Join Date
Jan 2013
Posts
3
Rep Power
0

#### Got it now^^

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