Сегодня мы с вами рассмотрим цикл, который объявляется ключевым словом while(пока).
Цикл while - позволяет выполнять одинаковые действия, пока выполняется условие, заданное в цикле.
😮 5 удивительных скрытых возможностей Python Секрет 1. ELSE в циклах FOR и WHILE Когда мы начинаем программировать, одним из первых знакомств являются условные операторы (if-else). Они позволяют изменять поток кода в зависимости от значения определенной переменной. В блоке if проверяется логическое условие, и если оно не выполняется, выполняется код, определенный в блоке else. 🟠Но также можно использовать ключевое слово else в циклах for и while. В этом случае, функциональность else сводится к выполнению кода только при успешном завершении цикла без оператора break. Это может быть полезно, например, если у нас есть список чисел и мы хотим написать логику, которая определяет, является ли любое из чисел в списке четным: # определяем список чисел numbers: list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # также определяем переменную-флаг, которая укажет, было ли найдено четное число found_even: bool = False for num in numbers: # если остаток после деления на 2 равен 0, то число четное if num % 2 == 0: print(f"{num} is even") # устанавливаем флаг в True, потому что нашли четное число found_even = True # мы можем остановить выполнение, потому что нашли четное число break # если значение флага False, то четных чисел не найдено if not found_even: print("No even numbers found") 🟠Эта логика относительно проста. Применяем флаг (в данном случае переменная found_even) для обозначения того, найдено ли четное число или нет. Если в процессе итерации находится четное число, используем ключевое слово break, чтобы остановить выполнение цикла. Вышеприведенное можно записать следующим образом: numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for num in numbers: if num % 2 == 0: print(f"{num} is even") break else: print("No even numbers found") 🟠Теперь переменная-флаг found_even больше не требуется. Мы можем использовать ключевое слово else, чтобы вывести “Четные числа не найдены” только в том случае, если ключевое слово break так и не будет задействовано в процессе итерации цикла. Секрет 2. Оператор walrus 🟠Оператор walrus (:=) был введен в версию Python 3.8. Он используется для назначения переменных со значениями в качестве выражений. Рассмотрим следующий пример. Нам необходимо реализовать логику, которая генерирует последовательность случайных чисел до тех пор, пока не будет сгенерировано определенное число. 🟠Предположим, нам нужно получить 10. Обычно пишем что-то вроде: import random rand = None while True: # генерация случайного числа от 1 до 100 rand = random.randint(1, 100) # если случайное число равно 10, прервать выполнение if rand != 10: print(rand) else: break # это будет выполнено только в том случае, если мы получим 10 и прервем цикл print("We got a 10!") Генерируем в цикле случайное число и сохраняем его в переменной rand. Количество итераций зависит от значения переменной rand. Чем быстрее rand станет равным 10, тем быстрее прервем цикл. 🟠Теперь с помощью оператора walrus получим ту же функциональность, используя приведенный ниже код: import random while (rand := random.randint(1, 100)) != 10: print(rand) print("We got a 10!") Здесь сообщаем Python, что хотим, чтобы цикл while выполнялся до тех пор, пока значение rand не станет равно 10. Кроме того, сообщаем ему, что rand будет получать свое значение из random.randint(1, 100) с каждой новой итерацией. 📌 Секрет 3. Многоточие (и др. секреты) @Python Django