Python Python Basics (2015) Number Game App Number Game Takeaways

Hoessein Abd
Hoessein Abd
Python Web Development Techdegree Graduate 19,106 Points

This is how I did the reverse game! I want to add 1 more functionality. Can anyone give me a tip?

I made a loop. In the loop a random_number will be generated and tested if it is equal to my secret_number argument. If the guess is wrong I print out the random_number that the computer guessed and whether it is higher or lower than my secret_number. How can I depending on the first iteration make the computer guess a lower/higher random_number than the random_number in the next iteration?

import random

def game(secret_number):
    guesses_left = 5

    print("Hey computer, can you beat me by guessing the nummer I have in mind? You will receive {} guesses, good luck!".format(guesses_left))

    while guesses_left > 1:
        random_number = random.randint(1, 10)
        if random_number == secret_number:
            print("Yo computer, {} is the correct answer! Good job!".format(random_number))
            break
        elif random_number < secret_number:
            guesses_left -= 1
            print("{} is lower than what I have in mind, try again! You have {} guesses left.".format(random_number, guesses_left))    
        else: 
            guesses_left -= 1
            print("{} is higher than what I have in mind, try again! You have {} guesses left.".format(random_number, guesses_left))
    else:
        print("Game over! You didn't guess the number in the amount of guesses available.")

    play_again = input("Fancy another game? Enter yes or no: ")
    if play_again.lower() == "yes":
        game(6)
    else:
        print("Okay! Have a nice day!")

game(6)     

1 Answer

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 59,572 Points

One way would be to track the range of targeted guesses with variables, such as, lower_limit and upper_limit.

  • Initially set these values to the limits of your initial range: 1 and 10
  • Then replace the random guess to use these limits: random_number = random.randint(lower_limit, upper_limit)
  • Finally, based on the guess being too low or too high, use the previous guess to update the appropriate value of lower_limit or upper_limit

Post back if you have more questions. Good luck!!

Hoessein Abd
Hoessein Abd
Python Web Development Techdegree Graduate 19,106 Points

Do I need to declare the lower and upper like this: lower_limit = 1 upper_limit = 10

then : random_number = random.randint(lower_limit, upper_limit)

Isn't that the same as passing 1, 10? I can't see how it will give me a lower or higher random number?

Also I have no idea how i can apply your third bulletpoint. Specifically I don't know how I can do something else with the next iteration.

Chris Freeman
Chris Freeman
Treehouse Moderator 59,572 Points

Do I need to declare the lower and upper like this: lower_limit = 1 upper_limit = 10 then : random_number = random.randint(lower_limit, upper_limit). Correct.

Isn't that the same as passing 1, 10? I can't see how it will give me a lower or higher random number? Be sure to place the original assignment to lower_limit and upper_limit outside of the loop. That way as these limits get changed, the random number will too.

Also I have no idea how i can apply your third bulletpoint. Specifically I don't know how I can do something else with the next iteration. If the random_number is less that the secret number set lower_limit = random_number. If the random number is higher, set higher_limit = random_number.

Hoessein Abd
Hoessein Abd
Python Web Development Techdegree Graduate 19,106 Points

Awesome, it worked. the logic is still a bit vague to me though. I'm not sure how a lower/higher number is generated depending on the previous guess.

The random_number sometimes gives the same number but less/higher than the previous number. so i changed the operater accordingly.

thanks for the help!