#1
  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. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Nov 2012
    Posts
    43
    Rep Power
    2
    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.
  4. #3
  5. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    May 2009
    Posts
    479
    Rep Power
    33
    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
  6. #4
  7. 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
  8. #5
  9. 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

IMN logo majestic logo spyfu logo threadwatch logo seochat tools logo