I have the following code:
import random as rd
secret_number = rd.randint(1,100)
num_guesses = 5
guess = int(input("Please guess a number"))
while num_guesses > 0 and guess != secret_number:
if guess > secret_number:
print(f"Too high.\n You have {num_guesses - 1} guesses remaining.")
num_guesses = num_guesses - 1
guess = int(input("Make a guess."))
elif guess < secret_number:
print(f"Too low.\n You have {num_guesses - 1} guesses remaining.")
num_guesses = num_guesses - 1
guess = int(input("Make a guess."))
else:
print('You guessed correctly!')
I would expect the while loop to go through a maximum of 5 times, but it seems to be going through 6 times. Can someone please explain like I’m five why that’s happening?
>Solution :
As @quamrana suggested; you need to check num_guesses > 0 before asking using again:
import random as rd
secret_number = rd.randint(1,100)
num_guesses = 5
guess = int(input("Please guess a number"))
while num_guesses> 0 and guess != secret_number:
if guess > secret_number:
print(f"Too high.\n You have {num_guesses - 1} guesses remaining.")
num_guesses = num_guesses - 1
if num_guesses > 0:
guess = int(input("Make a guess."))
elif guess < secret_number:
print(f"Too low.\n You have {num_guesses - 1} guesses remaining.")
num_guesses = num_guesses - 1
if num_guesses > 0:
guess = int(input("Make a guess."))
else:
print('You guessed correctly!')
Edit: As suggested by @Abdul you can just keep one input after the while loop:
import random as rd
secret_number = rd.randint(1,100)
num_guesses = 5
while num_guesses> 0 and guess != secret_number:
guess = int(input("Make a guess."))
if guess > secret_number:
print(f"Too high.\n You have {num_guesses - 1} guesses remaining.")
num_guesses = num_guesses - 1
elif guess < secret_number:
print(f"Too low.\n You have {num_guesses - 1} guesses remaining.")
num_guesses = num_guesses - 1
else:
print('You guessed correctly!')