Russian subtitles

← 02-46 Команда break (Решение)

Get Embed Code
8 Languages

Showing Revision 4 created 08/01/2014 by Fran Ontanaya.

  1. Вот правильный ответ.
  2. Первый вариант эквивалентен нашей записи,
  3. поскольку в этом коде содержится условие if False.
  4. Значение False никогда не будет истинным, поэтому мы никогда не доберемся до команды break,
  5. этот код для нас недосягаем.
  6. Вместо этого мы выполним инструкцию и вернемся к началу цикла.
  7. Каждый раз, когда условие истинно, мы будем выполнять инструкцию .
  8. Второй вариант не подходит нам, поскольку инструкция break
  9. остановит цикл.
  10. В нашей записи цикл может выполниться более одного раза,
  11. к примеру, дважды,
  12. то в данном варианте инструкция выполнится лишь один раз,
  13. поскольку после первого ее выполнения мы достигнем команды break, и цикл завершится.
  14. Третий вариант также неверен, поскольку условие while True позволит циклу выполняться
  15. вечно, если только мы не выйдем из него командой break.
  16. Проблема в том, что условие выхода из цикла идентично
  17. условию продолжения цикла в исходной записи, хотя должно быть противоположным по смыслу.
  18. while-цикл продолжает выполняться, пока проверяемое условие истинно.
  19. А мой код в этом варианте наоборот остановится, если проверяемое условие истинно.
  20. Для того, чтобы они были эквивалентными, мы должны были заменить
  21. это условие на противололожное; так, если бы мы записали условие if not ,
  22. которое ложно если условие истинно и наоборот,
  23. а затем поставим break, тогда это будет эквивалентом цикла в исходной записи.
  24. А первоначальный вариант – нет.
  25. Последний вариант самый запутанный.
  26. И он тоже всегда эквивалентен исходному циклу,
  27. Если мы мысленно проследим выполнение кода, то
  28. в исходном цикле при истинности условия , мы выполняем инструкцию
  29. и продолжаем.
  30. Если условие истинно и на втором проходе, мы снова выполняем
  31. и идем дальше.
  32. Если же мы посмотрим на этот вариант – ну, если условие истинно, мы
  33. выполняем .
  34. Если условие снова истинно, мы еще раз выполняем и продолжаем.
  35. В этом случае поведение такое же.
  36. Мы должны проследить выполнение и в том случае, когда условие
  37. ложно.
  38. Если здесь условие истинно, то мы выполняем .
  39. Если на втором проходе оно ложно, мы выходим из цикла
  40. и выполняем код дальше.
  41. В этом случае если условие на первом проходе истинно, то мы выполним .
  42. Если на втором проходе оно становится ложно, мы переходим к блоку else.
  43. Если условие ложно, мы переходим к блоку else и выполняем команду break,
  44. которая выводит нас из цикла.
  45. Получается точно такой же сценарий, в котором мы один раз проверяем ,
  46. затем выполняем и снова проверяем .
  47. При этом мы не выполняем во второй раз и выходим из цикла.
  48. Итак, эти два варианта эквивалентны данной записи, а эти два – нет.