簡體   English   中英

為什么這個無限的while循環不起作用

[英]Why is this infinite while loop not working

def main():

    import random

    guesslist = []
    ErrorTol = 5

    guessesTaken = 0



    print("|--------------------------------------------------------------------|")
    print("|                                                                    |")
    print("|--------------------------------------------------------------------|")                                                           
    print("|     WELCOME! Please enter your name to begin this guessing game    |")
    print("|--------------------------------------------------------------------|")
    print("|                                                                    |")
    print("|--------------------------------------------------------------------|")
    myName = input()

    again = ""

    while again != "q":

        number = random.uniform(-300, 300)
        print('Well, ' + myName + ', I am thinking of a number between -300 and 300.')

        while guessesTaken < 3:
         print("Take a guess.") 
         guess = input()
         guess = int(guess)

         guesslist.append(guess) 

         guessesTaken = guessesTaken + 1

         if guess < number:
             print('Your guess is too low.')

         if guess > number:
             print('Your guess is too high.')

         if guess == number or (abs(number - guess) <= ErrorTol):
             break

        if guess == number or (abs(number - guess) <= ErrorTol):
         guessesTaken = guessesTaken
         print('Good job, ' + myName + '! You guessed my number in ' + str(guessesTaken) + ' guesses!')

         print("numbers you guessed:", guesslist)

        else:
         number = int(number)
         print('Nope. The number I was thinking of was ' + str(number))

        again = input("Hit 'q' to quit the program or any other keys to play the game again.").lower()[0]

main()

我無法使程序正確循環,不知道我做錯了什么! 當我無法正確猜出數字時,我應該可以按任意鍵重試,然后按“ q”鍵重試,但是當我按任何其他鍵時,它將無法正確循環。 同樣,我不知道此代碼有什么問題。

您無需將guessesTaken重置為零,因此您的程序就好像用戶已經在這里進行了三個猜測一樣。 嘗試這樣的事情:

    again = input("Hit 'q' to quit the program or any other keys to play the game again.").lower()[0]
    guessesTaken = 0

當您檢查密鑰是否不等於q時,必須重置猜測數量。 我將您的代碼放入另一種方法中,這只是更好的設計! 祝好運!

import random
def main():

print("|--------------------------------------------------------------------|")
print("|                                                                    |")
print("|--------------------------------------------------------------------|")                                                           
print("|     WELCOME! Please enter your name to begin this guessing game    |")
print("|--------------------------------------------------------------------|")
print("|                                                                    |")
print("|--------------------------------------------------------------------|")

guess()
def guess():

guesslist = []
ErrorTol = 5

guessesTaken = 0
myName = input()

again = ""

while again != "q":
    guessesTaken = 0

    number = random.uniform(-300, 300)
    print('Well, ' + myName + ', I am thinking of a number between -300 and 300.')

    while guessesTaken < 3:
     print("Take a guess.") 
     guess = input()
     guess = int(guess)

     guesslist.append(guess) 

     guessesTaken = guessesTaken + 1

     if guess < number:
         print('Your guess is too low.')

     if guess > number:
         print('Your guess is too high.')

     if guess == number or (abs(number - guess) <= ErrorTol):
         break

    if guess == number or (abs(number - guess) <= ErrorTol):
     guessesTaken = guessesTaken
     print('Good job, ' + myName + '! You guessed my number in ' + str(guessesTaken) + ' guesses!')

     print("numbers you guessed:", guesslist)

    else:
     number = int(number)
     print('Nope. The number I was thinking of was ' + str(number))

    again = input("Hit 'q' to quit the program or any other keys to play the game again.")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM