2015-10-28 6 views
0
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», чтобы повторить попытку, но когда я нажму на любые другие клавиши, он не зациклится должным образом. Опять же, я не знаю, что не так с этим кодом.Почему этот бесконечный цикл не работает

ответ

2

Вы не сбрасываете guessesTaken в ноль, поэтому ваша программа действует так, как будто пользователь уже сделал три догадки. Попробуйте что-то вроде этого:

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

Большое вам спасибо. – AJZ

0

Вы должны сбросить количество догадок, когда вы проверяете, если ключ не равен ц. Я поместил ваш код в другой метод, просто лучший дизайн! Удачи!

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.") 
+0

Большое вам спасибо. – AJZ

Смежные вопросы