I’m a beginner so please forgive me if this is a dumb question. I wrote this guessing game (using a tutorial) where the user selects an upper bound and then a random number is chosen as the “secret number.”
When the user makes a guess and it’s lower/higher than the secret number, the lower/upper limit changes to give the user a hint. For example, the secret number is 50. The user types in 30. The lower limit changes from 0 to 30.
In the next attempt, if the user types a number below 30, the lower limit goes back down. For example, in the second attempt, user writes 20. In the third attempt, the lower limit is now 20.
I can’t figure out how to stop that from happening. Instead of the lower limit changing, I want the program to tell the user that they can’t go lower/higher than the number they guessed in the previous attempt.
Here’s the code:
import random while True: flag=True while flag: num = input("Choose an upper bound: ") if num.isdigit(): print("Let's play!") num=int(num) flag=False else: print("Invalid input. Try again: ") secret_number = random.randint(1, num) no_tries=0 max_tries=3 lower_limit=0 upper_limit=num ``` while no_tries<max_tries: guess = int(input(f"Please type a number between {lower_limit} and {upper_limit} ")) no_tries=no_tries+1 if guess==secret_number: print("You won!") break elif guess<secret_number: print(f"You've guessed wrong.") lower_limit=guess elif guess>secret_number: print(f"You've guessed wrong.") upper_limit=guess else: print("You have used all three tries. You lose!") user_input=input("Would you like to play again? Y/N: ").upper() if user_input=="N": print("Game over") break
Advertisement
Answer
Check if lower_limit
is less than guess
/ upper_limit
is more than guess
before assigning.
if guess == secret_number: print("You won!") break elif guess < secret_number: if lower_limit < guess: print("You've guessed wrong.") lower_limit = guess else: print(f"You can't go lower than {lower_limit}!") elif guess > secret_number: if upper_limit > guess: print("You've guessed wrong.") upper_limit = guess else: print(f"You can't go higher than {upper_limit}!")