В прошлой статье мы научились заставлять программу принимать решения.

Например:

age = 20

if age >= 18:
    print("Доступ разрешён")

Но что делать, если действие нужно выполнить много раз?

Например:

  • спрашивать пароль, пока он не станет правильным;
  • повторять меню программы;
  • ждать, пока пользователь введёт корректное значение.

Для этого существуют циклы.


Повторяем действия

Представим, что мы хотим вывести числа от 1 до 5.

Без цикла пришлось бы написать:

print(1)
print(2)
print(3)
print(4)
print(5)

Работает, но выглядит неудобно.

А если нужно вывести числа от 1 до 1000?

Для этого и нужны циклы.


Первый цикл while

Цикл while означает:

Пока условие истинно - выполняй код.

Например:

count = 1

while count <= 5:
    print(count)
    count = count + 1

Результат:

1
2
3
4
5

Разберём, что произошло.

Сначала:

count = 1

Мы создали переменную со значением 1.

Затем Python проверяет условие:

count <= 5

Пока оно истинно, выполняется блок внутри while.


Почему цикл остановился?

Очень важная часть:

count = count + 1

Каждый проход цикла увеличивает число.

Получается:

1 → 2 → 3 → 4 → 5 → 6

Когда count становится равным 6, условие

count <= 5

становится ложным.

Цикл заканчивается.


Бесконечный цикл

Что будет, если забыть изменить значение?

Например:

count = 1

while count <= 5:
    print(count)

Условие всегда остаётся истинным.

Программа будет бесконечно выводить:

1
1
1
1
...

Такой цикл называется бесконечным.

Поэтому внутри while обычно должно быть что-то, что со временем изменяет условие.


Остановка цикла с помощью break

Иногда нужно остановить цикл раньше.

Для этого существует команда break.

Например:

while True:
    answer = input("Введите команду: ")

    if answer == "exit":
        break

    print("Вы ввели:", answer)

Теперь программа будет работать, пока пользователь не введёт:

exit

После этого цикл завершится.


Пропуск одной итерации с continue

Иногда нужно не остановить цикл, а просто перейти к следующему повторению.

Для этого используется continue.

Например:

number = 0

while number < 5:
    number = number + 1

    if number == 3:
        continue

    print(number)

Результат:

1
2
4
5

Когда number стал равен 3, Python пропустил вывод и сразу начал следующий проход.


Что мы сегодня узнали

Сегодня мы познакомились с первым циклом в Python.

  • while повторяет код, пока условие истинно.
  • Условие проверяется перед каждым повторением.
  • Внутри цикла нужно изменять состояние, иначе можно получить бесконечный цикл.
  • break полностью завершает цикл.
  • continue пропускает текущий проход и переходит к следующему.

Попробуйте сами

Напишите программу, которая спрашивает пароль.

Например:

password = ""

while password != "python":
    password = input("Введите пароль: ")

print("Доступ разрешён")

Попробуйте:

  • ввести неправильный пароль несколько раз;
  • ввести правильный пароль;
  • добавить ограничение на количество попыток.

Что дальше?

Теперь мы умеем повторять действия, пока выполняется условие.

Но иногда мы заранее знаем, что хотим пройтись по набору элементов.

Например:

  • вывести все числа от 1 до 10;
  • обработать список пользователей;
  • перебрать символы строки.

Для этого существует цикл for, с которым мы познакомимся в следующей статье.