简体   繁体   中英

Fix Python Guessing Game to not count erroneous tries

Running Python code for guessing game - if guess number outside of range - do not want it to count against tries. Code works but counts erroneous numbers as tries.

My code:

import random

print("The number is between 1 and 10")
print("You have 5 tries!")

theNumber = random.randrange(1,10)
maxTries = 5
tries = 1
guess = int(input("Take a guess: "))


while ((tries < maxTries) & (guess != theNumber)):  
    try:                    
        if guess > theNumber:
            print("Guess lower...")
        elif guess < theNumber:
            print("Guess higher...")        
        if guess > 10:
                raise ValueError

    except ValueError:
            print("Please enter a numeric value between 1 and 10.")
            #continue

    guess = int(input("Guess again: "))
    tries = tries + 1


    if(guess == theNumber):
        print("You guessed it! The number was", theNumber)
        print("And it only took you", tries, "tries!\n")
    else:
        print("You failed to guess", theNumber, "!")

It allows continued guessing up to 5 tries as long as guess is between 1 and 10. If outside of this range - it will not count as a try but tells the user to "Please enter a numeric value between 1 and 10"). Which the code does - it just counts those tries when I do not want it to work that way.

Try this one:

import random

min_number = 1
max_number = 10
number = random.randrange(min_number, max_number + 1)
print(number) # To know the number you are guessing
maximum_tries = 5

print(f"The number is between {min_number} and {max_number}")
print(f"You have {maximum_tries} tries!")

guess = int(input("Take a guess: "))

j = 1

while True:

    if guess > max_number or guess < min_number:
        print("Please enter a numeric value between 1 and 10.")
        j = j - 1
    elif guess > number:
        print("Guess lower...")
        print("You failed to guess", j, "!")
    elif guess < number:
        print("Guess higher...")
        print("You failed to guess", j, "!")

    if guess == number:
        print("You guessed it! The number was", number)
        print("And it only took you", j, "tries!\n")
        break

    if j == maximum_tries:
        break

    guess = int(input("Guess again: "))
    j = j + 1

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM