Python Programming
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me

The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.

Go Back   Dev Shed ForumsProgramming LanguagesPython Programming

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
  #1  
Old January 13th, 2013, 09:31 PM
blackrayne01 blackrayne01 is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Jan 2013
Posts: 3 blackrayne01 User rank is Just a Lowly Private (1 - 20 Reputation Level) 
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

Reply With Quote
  #2  
Old January 14th, 2013, 04:40 AM
eliskan eliskan is offline
Contributing User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Nov 2012
Posts: 43 eliskan User rank is Just a Lowly Private (1 - 20 Reputation Level) 
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,
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.

Reply With Quote
  #3  
Old January 14th, 2013, 10:46 AM
dwblas dwblas is offline
Contributing User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: May 2009
Posts: 297 dwblas User rank is Corporal (100 - 500 Reputation Level)dwblas User rank is Corporal (100 - 500 Reputation Level)dwblas User rank is Corporal (100 - 500 Reputation Level)dwblas User rank is Corporal (100 - 500 Reputation Level) 
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 

Reply With Quote
  #4  
Old January 14th, 2013, 11:36 AM
blackrayne01 blackrayne01 is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Jan 2013
Posts: 3 blackrayne01 User rank is Just a Lowly Private (1 - 20 Reputation Level) 
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,
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

Reply With Quote
  #5  
Old January 14th, 2013, 09:45 PM
blackrayne01 blackrayne01 is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Jan 2013
Posts: 3 blackrayne01 User rank is Just a Lowly Private (1 - 20 Reputation Level) 
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

Reply With Quote
Reply

Viewing: Dev Shed ForumsProgramming LanguagesPython Programming > Python number guessing game

Developer Shed Advertisers and Affiliates



Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 


Powered by: vBulletin Version 3.0.5
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.

© 2003-2013 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap