В языке программирования Python цикл while многократно выполняет целевой оператор, пока заданное условие истинно.
Синтаксис
Синтаксис цикла while в языке программирования Python:
while выражение: оператор(ы)
Здесь оператор(ы) могут быть одиночным оператором или блоком операторов. Условие может быть любым выражением, а true — любым ненулевым значением. Цикл повторяется, пока условие истинно.
Когда условие становится ложным, управление программой переходит к строке, следующей за циклом.
В Python все операторы с отступом на одинаковое количество символов после программной конструкции считаются частью одного блока кода. Python использует отступы в качестве метода группировки операторов.
Блок-схема
Здесь ключевым моментом цикла while в Python является то, что цикл может никогда не запуститься. Когда условие проверяется и результат оказывается ложным, тело цикла будет пропущено, и будет выполнен первый оператор после цикла while.
Как сделать бесконечный цикл в Python!
Пример
#!/usr/bin/python count = 0 while (count < 9): print ‘Количество:’, count count = count + 1 print «До свидания!»
Когда приведённый выше код выполнится, он даст следующий результат:
Количество: 0 Количество: 1 Количество: 2 Количество: 3 Количество: 4 Количество: 5 Количество: 6 Количество: 7 Количество: 8 До свидания!
Здесь блок, состоящий из операторов печати и инкремента, выполняется повторно до тех пор, пока значение count не станет меньше 9. С каждой итерацией отображается текущее значение счетчика индексов, которое затем увеличивается на 1.
Бесконечный цикл
В Python цикл становится бесконечным, если условие никогда не становится ЛОЖНЫМ. Вы должны соблюдать осторожность при использовании циклов while из-за возможности того, что это условие никогда не перейдёт в значение FALSE. Это приводит к циклу, который никогда не заканчивается. Такой в Python цикл while называется бесконечным циклом.
Бесконечный цикл может быть полезен в клиент-серверном программировании, когда сервер должен работать непрерывно, чтобы клиентские программы могли взаимодействовать с ним по мере необходимости.
Как сделать бесконечный цикл в Python? Ниже пример бесконечного цикла.
#!/usr/bin/python var = 1 while var == 1 : # Это создает бесконечный цикл num = raw_input(«Введите число:») print «Вы ввели: «, num print «До свидания!»
Когда приведённый выше код выполнится, он даст следующий результат:
Введите число :20 Вы ввели: 20 Введите число :29 Вы ввели: 29 Введите число :3 Вы ввели: 3
Вышеприведенный пример выполняется нескончаемо. Как остановить бесконечный цикл в Python? Используйте CTRL + C, чтобы выйти из бесконечного цикла и программы.
Использование оператора else с циклом while
Python поддерживает оператор else, объединенный с оператором цикла while. Если оператор else используется с циклом while, оператор else выполняется, когда условие становится ложным.
16.3 Цикл while. Операторы break и continue. Бесконечный цикл. Основы Python
В следующем примере показано сочетание в Python оператора else с оператором while, который выводит число, если оно меньше 5, в противном случае выполняется оператор else.
#!/usr/bin/python count = 0 while count < 5: print count, » меньше 5″ count = count + 1 else: print count, » не меньше 5″
Когда приведённый выше код выполнится, он даст следующий результат:
0 меньше 5 1 меньше 5 2 меньше 5 3 меньше 5 4 меньше 5 5 не меньше 5
Цикл while в одну строку
Подобно синтаксису оператора if, если ваш цикл while состоит только из одного оператора, оно может быть помещено в ту же строку, что и заголовок while.
Ниже приведен синтаксис и пример однострочного while.
#!/usr/bin/python flag = 1 while (flag): print ‘flag действительно true!’ print «До свидания!»
Лучше не пробовать приведенный выше пример, потому что он входит в бесконечный цикл, и вам нужно нажать клавиши CTRL + C, чтобы выйти.
Оглавление
- 1. Python – Самоучитель для начинающих
- 2. Python – Обзор
- 3. Python – Установка среды
- 4. Python – Базовый синтаксис
- 4.1. Python – Аргументы командной строки
- 5. Python – Типы переменных
- 6. Python – Основные операторы
- 6.1. Python – Арифметические операторы
- 6.2. Python – Операторы сравнения
- 6.3. Python – Операторы присваивания: примеры
- 6.4. Python – Побитовые операторы
- 6.5. Python – Логические операторы
- 6.6. Python – Операторы членства
- 6.7. Python – Операторы идентификации
- 6.8. Python – Приоритет операторов
- 7. Python – Условные операторы
- 7.1. Python – Условие if
- 7.2. Python – Условные операторы if. else и elif
- 7.3. Python – Вложенные операторы if
- 8. Python – Циклы
- 8.1. Python – Цикл while
- 8.2. Python – Цикл for
- 8.3. Python – Вложенные циклы
- 8.4. Python – Оператор break
- 8.5. Python – Оператор continue
- 8.6. Python – Оператор pass
- 9. Python – Числа
- 9.1. Python – Метод abs()
- 9.2. Python – Метод ceil()
- 9.3. Python – Метод cmp()
- 9.4. Python – Метод exp()
- 9.5. Python – Метод fabs()
- 9.6. Python – Метод floor()
- 9.7. Python – Метод log()
- 9.8. Python – Метод log10()
- 9.9. Python – Метод max()
- 9.10. Python – Метод min()
- 9.11. Python – Метод modf()
- 9.12. Python – Метод pow()
- 9.13. Python – Метод round()
- 9.14. Python – Метод sqrt()
- 9.15. Python – Метод choice()
- 9.16. Python – Метод randrange()
- 9.17. Python – Метод random()
- 9.18. Python – Метод seed()
- 9.19. Python – Метод shuffle()
- 9.20. Python – Метод uniform()
- 9.21. Python – Метод acos()
- 9.22. Python – Метод asin()
- 9.23. Python – Метод atan()
- 9.24. Python – Метод atan2()
- 9.25. Python – Метод cos()
- 9.26. Python – Метод hypot()
- 9.27. Python – Метод sin()
- 9.28. Python – Метод tan()
- 9.29. Python – Метод degrees()
- 9.30. Python – Метод radians()
Источник: proglang.su
Подробный разбор цикла while в Python
Цикл — это некий набор инструкций. Он выполняется до тех пор, пока его условие истинно. Давайте разберемся, как работает цикл while в Python.
Что такое цикл?
Циклы — фундаментальное понятие в программировании. Если вы новичок, то обязаны в них разобраться. Циклы могут помочь выполнять набор инструкций до тех пор, пока заданное условие истинно.
В Python есть два основных вида циклов:
Они очень похожи друг на друга. Но если вы хотите писать по-настоящему быстрый код, вам нужно научиться грамотно выбирать нужный цикл.
Цикл while
Суть работы цикла while очень проста. Работает он так: ваши инструкции выполняются, пока условие истинно.
Цикл while проверяет условие перед каждой итерацией цикла. Если возвращается True , то выполняется блок кода внутри цикла.
Прежде чем мы возьмемся за написание кода, взгляните на блок-схему. Работает цикл следующим образом:
А теперь напишем небольшую программу. Это простой цикл, выводящий в консоль числа от 1 до 10.
x = 1 while x
Как вы можете заметить, тело цикла выполняется, пока x меньше или равно 10. Если вы присвоите x значение 20, то цикл не запустится вообще.
Вывод будет следующим:
1 2 3 4 5 6 7 8 9 10
Цикл do-while
Есть две вариации цикла while . Первая — непосредственно сам while , вторая — do-while . Разница заключается в том, что do-while запустится хотя бы один раз.
Цикл while может не запуститься вообще, если условие не будет истинным изначально. Do-while — напротив. Тут сначала выполняется тело цикла, и только потом происходит проверка условия.
Цикл do-while реализован в большинстве языков программирования, но в Python такого оператора нет. Тем не менее, его можно с легкостью имитировать — например, с помощью функций.
Давайте напишем код, имитирующий цикл do-while . Все нужные инструкции мы поместим внутри функции.
x = 20 def run_commands(x): print(x) run_commands(x) x += 1 while x
Эта программа запускает run_commands() еще до цикла while . Но сам цикл while не запустится: x равен 20.
Оператор else
Если вы хотите выполнить блок кода, когда проверка условия возвращает False , — добавьте оператор else .
Добавим в наш код else . Внутри этого блока напишем код, который будет выводить в консоль Готово . Выполнится этот блок только после того, как в консоль выведутся числа от 1 до 10.
x = 1 while x
Эта программа выведет в консоль числа от 1 до 10. Как только x станет равно 11, результатом проверки условия будет False . После этого выполнится блок кода else .
Однострочное объявление while
Если внутри цикла while у вас только одна строка — можно воспользоваться однострочным вариантом. Делается это так:
x = 1 while x: print(x)
Будьте осторожны — этот цикл бесконечный.
Бесконечные циклы
Если вы не будете осторожны, то можете случайно написать бесконечный цикл. Проверка условия бесконечного цикла всегда будет возвращать True . Пример бесконечного цикла:
x = 1 while x >= 1: print(x)
Этот цикл — бесконечный. Внутри цикла нет команды, которая изменяет значение x . Поэтому условие x >= 1 всегда истинно. Именно из-за этого цикл будет запускаться бесконечное количество раз.
Всегда будьте внимательны, когда создаете цикл. Небольшая ошибка — и у вас бесконечный цикл, что в конечном итоге приведет к сбою в работе программы.
Управление циклом
С циклом разобрались. Наконец мы можем перейти к операторам его управления.
Когда вы начнете работать в реальных проектах, вы будете сталкиваться с разными ситуациями. Например, когда нужно добавить условие, выполнение которого завершит цикл или пропустит итерацию.
Break
Этот оператор позволяет завершить цикл, если проверка условия возвращает True .
x = 1 while x
1 2 3 4
Выполнение цикла прекращается, когда x становится равно 5 — даже если x больше или равно 1.
Continue
Допустим, вам нужно пропустить итерацию цикла, если выполняется какое-то условие. Но цикл вы не хотите завершать до тех пор, пока проверка его условия не вернет False .
В этом случае вам нужно использовать ключевое слово continue :
x = 1 while x
1 2 3 4 6 7 8 9 10
Как видите, цикл выводит в консоль все числа от 1 до 10 кроме 5. Когда x становится равен 5, оставшаяся часть команд не выполняется, а начинается следующая итерация цикла.
Источник: pythonist.ru
Искусство написания циклов на Python
Цикл for — самый базовый инструмент потока управления большинства языков программирования. Например, простой цикл for на C выглядит так:
int i; for (i=0;i
Не существует более изящного способа написания цикла for на C. В сложных случаях обычно приходится писать уродливые вложенные циклы или задавать множество вспомогательных переменных (например, как i в показанном выше коде).
К счастью, в Python всё более удобно. В этом языке есть множество хитростей, позволяющих писать более изящные циклы, которые упрощают нашу жизнь. В Python вполне можно избежать вложенных циклов и вспомогательных переменных, и мы даже можем самостоятельно настраивать цикл for .
Эта статья познакомит вас с самыми полезными трюками по написанию циклов на Python. Надеюсь, она поможет вам ощутить красоту этого языка.
Одновременно получаем значения и индексы
Частым примером использования цикла for является получение индексов и значений из списка. Когда я начинал изучать Python, то писал свой код таким образом:
for i in range(len(my_list)): print(i, my_list[i])
Разумеется, он работал. Но это решение не в стиле Python. Спустя несколько месяцев я узнал стандартный способ реализации в стиле Python:
for i, v in enumerate(my_list): print(i, v)
Как мы видим, встроенная функция enumerate упрощает нам жизнь.
Как избежать вложенных циклов с помощью функции Product
Вложенные циклы — это настоящая головная боль. Они могут снизить читаемость кода и усложнить его понимание. Например, прерывание вложенных циклов обычно реализовать не так просто. Нам нужно знать, где прерван самый внутренний цикл, второй по порядку внутренний цикл, и так далее.
К счастью, в Python существует потрясающая функция product из встроенного модуля itertools . Мы можем использовать её, чтобы не писать множество вложенных циклов.
Давайте убедимся в её полезности на простом примере:
list_a = [1, 2020, 70] list_b = [2, 4, 7, 2000] list_c = [3, 70, 7] for a in list_a: for b in list_b: for c in list_c: if a + b + c == 2077: print(a, b, c) # 70 2000 7
Как мы видим, нам требуется три вложенных цикла, чтобы получить из трёх списков три числа, сумма которых равна 2077. Код не очень красив.
А теперь давайте попробуем использовать функцию product .
from itertools import product list_a = [1, 2020, 70] list_b = [2, 4, 7, 2000] list_c = [3, 70, 7] for a, b, c in product(list_a, list_b, list_c): if a + b + c == 2077: print(a, b, c) # 70 2000 7
Как мы видим, благодаря использованию функции product достаточно всего одного цикла.
Так как функция product генерирует прямое произведение входящих итерируемых данных, она позволяет нам во многих случаях избежать вложенных циклов.
Используем модуль Itertools для написания красивых циклов
На самом деле, функция product — это только вершина айсберга. Если вы изучите встроенный модуль Python itertools , то перед вами откроется целый новый мир. Этот набор инструментов содержит множество полезных методов, покрывающих наши потребности при работе с циклами. Их полный список можно найти в официальной документации. Давайте рассмотрим несколько примеров.
Создаём бесконечный цикл
Существует не меньше трёх способов создания бесконечного цикла:
1. При помощи функции count :
natural_num = itertools.count(1) for n in natural_num: print(n) # 1,2,3.
2. Функцией cycle :
many_yang = itertools.cycle(‘Yang’) for y in many_yang: print(y) # ‘Y’,’a’,’n’,’g’,’Y’,’a’,’n’,’g’.
3. Через функцию repeat :
many_yang = itertools.repeat(‘Yang’) for y in many_yang: print(y) # ‘Yang’,’Yang’.
Комбинируем несколько итераторов в один
Функция chain() позволяет объединить несколько итераторов в один.
from itertools import chain list_a = [1, 22] list_b = [7, 20] list_c = [3, 70] for i in chain(list_a, list_b, list_c): print(i) # 1,22,7,20,3,70
Выделяем соседние дублирующиеся элементы
Функция groupby используется для выделения соседних дублирующихся элементов в итераторе и их соединения.
from itertools import groupby for key, group in groupby(‘YAaANNGGG’): print(key, list(group)) # Y [‘Y’] # A [‘A’] # a [‘a’] # A [‘A’] # N [‘N’, ‘N’] # G [‘G’, ‘G’, ‘G’]
Как показано выше, соседние одинаковые символы соединены вместе. Более того, мы можем указать функции groupby способ определения идентичности двух элементов:
from itertools import groupby for key, group in groupby(‘YAaANNGGG’, lambda x: x.upper()): print(key, list(group)) # Y [‘Y’] # A [‘A’, ‘a’, ‘A’] # N [‘N’, ‘N’] # G [‘G’, ‘G’, ‘G’]
Самостоятельно настраиваем цикл
Изучив представленные выше примеры, давайте задумаемся о том, почему циклы for в Python настолько гибки и изящны. Насколько я понимаю, это из-за того, что мы можем применять в итераторе цикла for функции. Во всех рассмотренных выше примерах в итераторе всего лишь используются специальные функции. Все трюки имеют одинаковый шаблон:
for x in function(iterator)
Сам встроенный модуль itertools всего лишь реализует за нас самые распространённые функции. Если мы забудем функцию или не сможем найти нужную нам, то можем просто написать её самостоятельно. Если быть более точным, то эти функции являются генераторами. Именно поэтому мы можем генерировать с их помощью бесконечные циклы.
По сути, мы можем настроить цикл for под себя, как сделали бы это с настраиваемым генератором.
Давайте рассмотрим простой пример:
def even_only(num): for i in num: if i % 2 == 0: yield i my_list = [1, 9, 3, 4, 2, 5] for n in even_only(my_list): print(n) # 4 # 2
Как видно из приведённого выше примера, мы определили генератор под названием even_only . Если мы используем этот генератор в цикле for, итерация будет происходить только для чётных чисел из списка.
Разумеется, этот пример приведён только для объяснения. Существуют и другие способы выполнения тех же действий, например, использование представления списков.
my_list = [1, 9, 3, 4, 2, 5] for n in (i for i in my_list if not i % 2): print(n) # 4 # 2
Вывод
Задачу создания циклов на Python можно решать очень гибко и изящно. Чтобы писать удобные и простые циклы, мы можем использовать встроенные инструменты или даже самостоятельно определять генераторы.
На правах рекламы
Надёжный сервер в аренду, создавайте свою конфигурацию в пару кликов и начинайте работать уже через минуту. Всё будет работать без сбоев и с очень высоким uptime!
Источник: habr.com