为什么这个无限循环没有工作

2024-09-30 18:22:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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键再试一次,但当我按任何其他键时,它都不会正常循环。再说一遍,我不知道这个代码有什么问题。你知道吗


Tags: ortogamenumberinputifmainrandom
2条回答

在检查键是否不等于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.")

您不会将guessesTaken重置为零,这样您的程序就好像用户已经进行了三次猜测一样。尝试以下操作:

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

相关问题 更多 >