2017-01-29 9 views
1

Задача заключалась в том, чтобы сделать игру с угадыванием, где параметр является ответом. В конце, если человек правильно это понимает, он печатает поздравительное заявление и возвращает количество попыток, если они набирают ключ, он отображает ответ и пробует == -1. кроме этого, он продолжает цикл, пока не получит правильный ответ.Моя петля while никогда не достигает условного элемента и продолжает цикл

def guessNumber(num): 
    tries = 1 
    while tries > 0: 
     guess = input("What is your guess? ") 
     if guess == num: 
      print ("Correct! It took you" + str(tries)+ "tries. ") 
      return tries 
     elif guess == "quit": 
      tries == -1 
      print ("The correct answer was " + str(num) + ".") 
      return tries 
     else: 
      tries += 1 

Когда я запускаю его, независимо от того, что я в него вставляю, я продолжаю спрашивать меня о своей догадке.

+0

'break', то' return' –

+0

Если он продолжает спрашивать после ввода «бросить», то вы должны проанализировать ту часть, где вы вызываете эту функцию , Вы называете это в цикле? – miindlek

+0

Вы уверены, что разместили фактический отступ? – schwobaseggl

ответ

3

Поскольку вы назвали свою переменную num, поэтому я предполагаю, что это целое число, вы проверяли равенство между целым числом и строкой, чтобы оно никогда не было True. Попробуйте изменить Num к Силе (число) при сравнении, так:

def guessNumber(num): 
    tries = 1 
    while tries > 0: 
     guess = input("What is your guess? ") 
     if guess == str(num): 
      print ("Correct! It took you {0} tries. ".format(tries)) 
      return tries 
     elif guess == "quit": 
      tries = -1 
      print ("The correct answer was {0}.".format(num)) 
      return tries 
     else: 
      tries += 1 
+0

Это исправляет проблему, но теперь я не могу ввести «quit», потому что это не целое число. –

+0

Я понял свою ошибку, поэтому я изменил свой ответ 18 минут назад извините за путаницу. @MalaikatuKargbo Код выше должен работать. Он работает по тому же принципу. – kda

-1

Является ли код правильно отступом? Тело функции, которую вы определяете, определяется уровнем отступов.

В примере, который вы вставляете, поскольку строка справа после того, как def имеет меньше отступов, тело функции «пусто».

Indenting code is important in python

Кроме того, для присвоения одного значения переменной вы должны использовать один '=', так что:

tries == -1 

должен быть

tries = -1 

если вы хотите чтобы присвоить значение -1 этой переменной.

+1

Определенно не решение. Пустые функции приведут к исключению. – miindlek

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

  • Нет связанных вопросов^_^