Python, пока цикл продолжает повторяться

#python #variables #while-loop

#python #переменные #во время цикла

Вопрос:

У меня возникли некоторые проблемы с циклом while. Я запускаю его в eclipse и ввел исходный код:

 a = raw_input("Mom im hungry!!!!!! FEED MEEEEE" )
while a != "Feed yourself":
    print("Thats gross")
 

В результате, когда я набираю неправильный ответ, он отвечает::

 Thats gross 
thats gross 
 

и так далее.

Комментарии:

1. Ну, конечно, это будет повторяться, так как его условие всегда истинно. Почему, вы ожидали, что он сделает что-то еще?

2. Чтобы расширить комментарий @DavidZaslavsky, вам нужно скопировать назначение a внутри цикла while, иначе условие никогда не изменится.

3. Нет, я бы хотел, чтобы ты видел… это не позволит мне снова вводить данные. он просто постоянно твердит: «Это мерзко, это мерзко» и так далее.

4. скопируйте присваивание «a», что вы имеете в виду

Ответ №1:

Чего вы действительно хотите, так это:

 a = raw_input("Mom im hungry!!!!!! FEED MEEEEE" )
while a != "Feed yourself":
  print("Thats gross")
  a = raw_input("Mom im hungry!!!!!! FEED MEEEEE" )    # do something that may alter a !
 

потому что без 2-й строки в цикле while…

  • ничто не изменяет переменную a,
  • следовательно, a по-прежнему не «кормит себя»
  • следовательно, условие истинно,
  • следовательно, содержимое цикла повторяется!

Комментарии:

1. Я всегда поражаюсь, как они "no-brainers" , как правило, получают максимальную отдачу reps . Если бы я был представителем wh.re … 😉

Ответ №2:

Выполняется raw_input только один раз, а затем a сохраняет свое значение. Если вы не ввели "Feed yourself" его в первый раз, он будет зацикливаться вечно.

Ответ №3:

 a = raw_input("Mom im hungry!!!!!! FEED MEEEEE" )
while a != "Feed yourself":
    print("Thats gross")
    a = raw_input("Mom im hungry!!!!!! FEED MEEEEE" )