Цикл While

Вкратце

while условие:
    # код, который будет повторяться
    # пока условие истинно

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

Напишем функцию с простым циклом, который будет n раз выводить на экран строку 'Hello!':

def print_hello(n):
    counter = 0
    while counter < n:
        print('Hello!')
        counter = counter + 1

print_hello(2)
Hello!
Hello!

Теперь подробно проанализируем пример функции с циклом, который выводит на экран числа от 1 до числа-аргумента:

def print_numbers(last_number):
    i = 1
    while i <= last_number:
        print(i)
        i = i + 1
    print('finished!')

print_numbers(3)
1
2
3
finished!

Конструкция читается так: «делать то, что указано в теле цикла пока истинно условие (предикат) i <= last_number».

Цикл while состоит из трёх элементов:

  • Ключевое слово while.
  • Предикат после слова while.
  • Блок кода (тело цикла).

Каждое выполнение тела называется итерацией. В нашем примере вызов print_numbers(3) породил три итерации, на каждой из которых была выведена на экран переменная i.

Самое главное в цикле — завершение (выход). Процесс, который порождает цикл, должен в конце концов остановится. Ответственность за остановку полностью лежит на программисте.

Обычно задача сводится к введению переменной, называемой «счётчик». Сначала он инициализируется, то есть ему задаётся начальное значение. В нашем примере это строчка i = 1. Затем в условии цикла проверяется, не достиг ли счётчик своего предельного значения.

В нашем примере предельное значение определяется аргументом функции. Если условие цикла не выполнено, то тело не выполняется и интерпретатор двигается дальше, выполняя инструкции после цикла. Но если условие цикла истинно, то выполняется тело, в котором находится ключевой элемент остановки — изменение счетчика. Обычно его делают в конце тела, и это изменение — одно из редких мест, где невозможно обойтись без переменной. В нашем примере за изменение отвечает строчка i = i + 1.

Задание

Модифицируйте функцию print_numbers, так, чтобы она выводила числа в обратном порядке. Для этого нужно идти от верхней границы к нижней. То есть, счетчик должен быть инициализирован максимальным значением, а в теле цикла его нужно уменьшать до нижней границы.

Пример вызова и вывода:

print_numbers(4)
4
3
2
1
finished!

Определения

  • Цикл While — инструкция для повторения кода, пока удовлетворяется какое-то условие.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуютсяhttps://github.com/hexlet-basics

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

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