v1.0.0

Python с нуля для ЕГЭ · while: повторяем, пока условие верно

Урок курсаPython 35 задачБесплатно

while: повторяем, пока условие верно

Научимся связывать условие продолжения с изменением состояния и заранее видеть момент остановки.

Теория

Условие проверяется до шага

Цикл while подходит, когда число повторений заранее неизвестно, но известно условие продолжения. Перед каждой итерацией Python вычисляет условие. Если оно ложно уже в начале, тело не выполнится ни разу.

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

number = 1while number < 20:    number *= 2print(number)

Как найти момент остановки

Трассировка while чередует две операции: проверку условия и выполнение тела. Итоговым может стать значение, которое уже вышло за границу, потому что изменение произошло внутри последней выполненной итерации.

Важно не выполнять тело после первой ложной проверки. Именно в этот момент цикл завершён.

Разберём на примере
Проследим удвоение
number начинается с 1 и удваивается, пока остаётся меньше 20.
  1. Проверки для 1, 2, 4, 8 и 16 истинны, после них выполняется удвоение.
  2. После шага с 16 переменная становится равной 32.
  3. Проверка 32 < 20 ложна, тело больше не выполняется, итог равен 32.
Проверьте себя
Почему после цикла значение может оказаться больше указанной в условии границы?
Условие проверялось до последнего шага. Внутри этой итерации значение изменилось, а следующая проверка уже остановила цикл.

Откуда берётся бесконечный цикл

Если условие зависит от счётчика, но счётчик не меняется, результат проверки остаётся прежним. Программа продолжает повторять одно и то же действие и самостоятельно к остановке не приближается.

Как доказать остановку

Перед запуском сформулируйте меру прогресса: число уменьшается, счётчик растёт, строка становится короче или ввод меняется. Затем проверьте, что каждый проход действительно изменяет эту меру в нужную сторону.

Как действовать
Проверяем while
  1. Назовите условие продолжения. Сформулируйте его обычными словами.
  2. Найдите изменяемое состояние. Укажите строку тела, которая влияет на следующую проверку.
  3. Проследите несколько шагов. Запишите состояние перед проверкой и после тела.
  4. Проверьте крайние случаи. Рассмотрите ноль итераций и последнюю истинную проверку.

Практика

Проследите изменение состояния

После x = 1 выполняется while x <= 5: x += 2. Чему равен x после остановки?

Подсказка
Проверка идёт перед каждой итерацией.
Решение

x принимает 3, затем 5, затем 7. После этого условие 7 <= 5 ложно, и цикл останавливается.

Найдите значение после цикла

После x = 10 выполняется while x > 3: x -= 3. Чему равен x после цикла?

Подсказка
Проследите значения 10, 7, 4 и следующее изменение.
Решение

После трёх итераций x становится 1. Проверка 1 > 3 ложна, поэтому это итоговое значение.

Выберите условие продолжения

Какой оператор нужен в while password ... "python", чтобы повторять ввод, пока пароль не равен строке python?

Подсказка
Нужно проверить неравенство.
Решение

Оператор `!=` даёт True, пока строки различаются. Когда введено `python`, условие становится ложным.

Остановите бесконечный цикл

В коде i = 0; while i < 3: print(i) забыта одна команда изменения i. Запишите её.

Подсказка
После каждой итерации i должно приближаться к границе 3.
Решение

Команда `i += 1` увеличивает i. Тогда цикл печатает 0, 1, 2 и останавливается.

Проверьте накопление в while

Запустите цикл, который начинает с n = 1, прибавляет n к total и увеличивает n на 1, пока n <= 4. Чему равен total?

Подсказка
Складываются числа 1, 2, 3 и 4.
Решение

Накопитель получает 1, затем 3, 6 и 10. После увеличения n до 5 условие становится ложным.

Итог

Теперь вы можете связать условие while с изменением состояния и обосновать, почему цикл остановится.

Напишите цикл, который уменьшает число на 3 до тех пор, пока оно положительно. Проследите вручную два начальных значения, включая число, не кратное трём.

Прогресс

0 / 5
x

Вы ещё не решали задания