Python while loop through program not working

时间:2019-03-17 22:42:26

标签: python-3.x

    import random

replay = 1

while replay == 1:
    replay = replay - 1
    target = random.randint(1, 100)

    guess = int(input("Guess the number 1-100: "))

    count = 0

    score = 0

    while count == 0:
        score = score + 1
        if guess < target:
             print ("The number is higher. Try again.")
             guess = int(input("Guess the number 1-100: "))
        elif guess > target:
             print ("The number is lower. Try again.")
             guess = int(input("Guess the number 1-100: "))
        elif guess == target:
             print ("You guessed Correctly!")
             print ("Your score was:", score)
             again = str(input("Play again? (yes or no)"))
             if again == "yes" or "YES":
                 replay = replay + 1
             elif again == "no" or "NO":
                 break

This is my code, except it doesn't do what I want it to do. After you guess the correct number, it doesn't see to properly loop through the game again when you say yes or no. It just goes through the final if statement again.

Why won't it go through the entire program again?

1 个答案:

答案 0 :(得分:0)

Your code will always be evaluated to true

if again == "yes" or "YES":

Change it to:

if again.lower() == "yes":

Or

 if again in ("YES", "yes", "y",..)

When it is true, you need to break from you second loop:

if again.lower() == "yes":
    replay = replay + 1
    break

When it is false, don't break but exit the program using:

exit()

Since replay is only used to exit your code, you don't need it if you use exit().

Code would then be: import random

while True:
    target = random.randint(1, 100)
    guess = int(input("Guess the number 1-100: "))

    score = 0

    while True:
        score = score + 1
        if guess < target:
             print ("The number is higher. Try again.")
             guess = int(input("Guess the number 1-100: "))
        elif guess > target:
             print ("The number is lower. Try again.")
             guess = int(input("Guess the number 1-100: "))
        elif guess == target:
             print ("You guessed Correctly!")
             print ("Your score was:", score)
             again = str(input("Play again? (yes or no)"))
             if again.lower() == "yes":
                 break
             elif again.lower() == "no":
                 exit()