Что такое цикл
Цикл — это конструкция, которая позволяет повторять выполнение блока кода несколько раз. Циклы нужны там, где однотипные действия должны выполняться многократно: обработка чисел, чтение пользовательского ввода, поиск значения, игровые раунды.
Итерация — это одно выполнение тела цикла. Цикл while выполняет итерации до тех пор, пока условие цикла истинно.
Цикл while
while — это цикл с предусловием: Python сначала проверяет условие, и только если оно истинно, выполняет тело. После каждой итерации интерпретатор снова возвращается к проверке условия.
i = 1
while i <= 5:
print(i)
i += 1
# Output: 1 2 3 4 5 (each on a new line)
Как работает пример:
- Переменная
iинициализируется значением1. - Проверяется условие
i <= 5. Оно истинно, поэтому выполняется тело цикла. - В теле выводится текущее значение
i, затемiувеличивается на1. - Интерпретатор снова проверяет условие. Цикл повторяется, пока
iне станет больше5.
Оператор break
Оператор break немедленно прерывает выполнение цикла, даже если условие цикла всё ещё истинно. Его часто используют, когда нужно выйти из цикла по дополнительному условию.
i = 1
while i <= 10:
print(i)
if i == 5:
break # exit the loop when i reaches 5
i += 1
# Output: 1 2 3 4 5
Частый паттерн — бесконечный цикл, который прерывается по команде пользователя:
while True:
user_input = input("Type 'exit' to stop: ")
if user_input == "exit":
break
print(f"You typed: {user_input}")
Оператор continue
Оператор continue пропускает оставшуюся часть текущей итерации и переходит к следующей проверке условия. В отличие от break, цикл не завершается.
i = 0
while i < 5:
i += 1
if i % 2 == 0:
continue # skip even numbers
print(i)
# Output: 1 3 5
i += 1 стоит до continue. Если бы он был после continue, при чётном i переменная не менялась бы, и цикл зациклился бы.
Бесконечный цикл
Бесконечный цикл — это цикл, условие которого всегда остаётся истинным. Явный бесконечный цикл while True: полезен, когда заранее неизвестно количество итераций, например при чтении пользовательского ввода или работе сервера.
while True:
user_input = input("Enter 'stop' to finish: ")
if user_input == "stop":
print("Loop finished.")
break
print(f"Echo: {user_input}")
Бесконечные циклы могут возникать и случайно, если условие завершения никогда не выполняется:
# WARNING: this is an infinite loop
i = 0
while i < 10:
print(i)
# forgot to increment i
Или когда переменная меняется в противоположную сторону:
# WARNING: this is also an infinite loop
i = 0
while i < 10:
print(i)
i -= 1 # moves away from the exit condition
Конструкция while/else
У цикла while может быть блок else. Он выполняется только при естественном завершении цикла, то есть когда условие стало ложным. Если цикл был прерван оператором break, блок else пропускается.
i = 1
while i <= 5:
print(i)
i += 1
else:
print("Loop completed without break.")
# Output: 1 2 3 4 5
# Loop completed without break.
Пример с break:
i = 1
while i <= 5:
if i == 3:
print("Break at 3")
break
print(i)
i += 1
else:
print("This line will NOT be printed.")
# Output: 1 2 Break at 3
continue не прерывает цикл, а только пропускает часть итерации, поэтому блок else после continue всё равно выполнится, если цикл доработает до конца.
Модуль random
Модуль random входит в стандартную библиотеку Python и предоставляет функции для генерации псевдослучайных чисел и случайного выбора элементов.
import random
print(random.random()) # float in [0.0, 1.0)
print(random.randint(1, 10)) # integer from 1 to 10 inclusive
print(random.randrange(1, 10)) # integer from 1 to 9
print(random.randrange(1, 10, 2)) # 1, 3, 5, 7 or 9
Где применяется random:
- Генерация тестовых данных.
- Игры и симуляции случайных событий.
- Перемешивание последовательностей.
- Лотереи, случайное распределение задач.
:= (Python 3.8+). Он позволяет присвоить значение и сразу проверить условие внутри while. Подробнее в разделе Python Documentation — Assignment Expressions.