8.1. Python – Цикл while: синтаксис, блок-схема, примеры. Бесконечный цикл. Оператор else с циклом while. Цикл while в одну строку
В языке программирования Python цикл while многократно выполняет целевой оператор, пока заданное условие истинно.
Синтаксис
Синтаксис цикла while в языке программирования Python:
while выражение: оператор(ы)
Здесь оператор(ы) могут быть одиночным оператором или блоком операторов. Условие может быть любым выражением, а true — любым ненулевым значением. Цикл повторяется, пока условие истинно.
Когда условие становится ложным, управление программой переходит к строке, следующей за циклом.
В Python все операторы с отступом на одинаковое количество символов после программной конструкции считаются частью одного блока кода. Python использует отступы в качестве метода группировки операторов.
Блок-схема

Здесь ключевым моментом цикла while в Python является то, что цикл может никогда не запуститься. Когда условие проверяется и результат оказывается ложным, тело цикла будет пропущено, и будет выполнен первый оператор после цикла while.
Пример
#!/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 выполняется, когда условие становится ложным.
В следующем примере показано сочетание в 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()
Надежные бесконечные циклы в Python
На мой взгляд работа с такими циклами зиждется на двух китах:
Кит 1: Они не существуют. Да-да, бесконечный цикл — своего рода чеширский кот, который может незаметно для программиста раствориться, оставив улыбку. И вот чтобы от вашей программы и результатов ее работы тоже не оставалась одна улыбка (а скорее недовольная гримасса начальника/заказчика), приходится соблюдать определенную осторожность. Каждый бесконечный цикл когда-то начался, а значит, когда-нибудь закончится, самое главное, чтобы он закончился когда удобно вам, а не поставщику данных, пользователю, тыкнувшему Ctrl+C, или прилетевшему НЛО. Проектируйте точки выхода из цикла. Чаще всего это будет конец итерации, впрочем возможен выход из середины. А иногда будут такие случаи, что перед выходом, кровь из носу, надо сделать какие-то действия, может даже еще одну-две итерации. Значит: выход из цикла надо крепко держать в своих руках и не отдавать на откуп сторонним библиотекам.
Кит 2: Долой магию. Под «магией» я понимаю использование нестандартных «мего-крутых» гиковских вещей, поведение которых вы не можете прогнозировать на все 100%. Я сам люблю написать несколько строчек, чтобы все сразу сделалось как надо. Вопрос в том, всегда ли при изменении начальных условий эта мега-крутости будут вести себя устойчиво и предсказуемо? Если вы еще не изучили их досконально, то может надежнее и эффективнее использовать более классические подходы? А то получится, что сэкономили 10 строчек, получили массу гемора и падений в критические моменты, и в конце-концов, чтобы от них избавиться дописали еще 50 строк кода 🙂
Как вы уже поняли, «магия» — понятие относительное. Когда я только начинал изучать питон, мне и конструкция вида
url=self._url + (http_params and (glue + '&'.join(['%s=%s' % (k,v) for k,v in http_params.items()])) or '')
На основе этого я выработал свой подход создания бесконечных циклов. Заводится вспомогательная переменная, назвать можно как угодно, я обычно называю working, далее все просто:
working = True
while working:
…
А дальше когда надо меняем working = False, цикл докручивается до конца, а следующий не начинается. Впрочем подход гибкий — можно не просто выйти из цикла, а сделать еще какие-то действия, выйти по середине (if not working: break) или даже прокрутить еще один-два цикла — все как требуется по задаче.
Причем совершенно необязательно менять эту переменную в самом цикле. Можно повесить обработчик на сигналы ОС и по определенному сигналу сбросить этот флаг. Так можно сделать красивый выход из цикла, чтобы при нажатии Ctrl+C на экран не вываливался трейсбек, и все наработанные данные валились вместе с ним в тартарары. Так есть возможность довести работу до логической точки, сохранить файлы, записать все изменения в БД и красиво выйти, помахав пользователю ручкой.
Такой подход зарекомендовал себя как гибкий и надежный, и активно используется в разных демонах.
Какие подходы используете вы?
Как создать бесконечный цикл в бесконечном цикле на Python
Не получается создать бесконечный цикл в таком-же цикле. Ошибок нет, но программа просто пропускает часть кода начиная со второго while.
while True: print("Введите 'Добавить' чтобы добавить два числа") user_input = input(": ") if user_input == "Добавить" or "добавить": while True: numb1 = float(input("Введите первое число: ")) numb2 = float(input("Введите второе число: ")) print(str(numb1), str(numb2))
Отслеживать
4,497 2 2 золотых знака 8 8 серебряных знаков 28 28 бронзовых знаков
задан 27 апр 2020 в 18:29
1 1 1 золотой знак 1 1 серебряный знак 2 2 бронзовых знака
Исключений, может, и нет. А вот ошибка как раз есть. Условие if user_input == "Добавить" or "добавить": всегда истинно.
27 апр 2020 в 18:34
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
>>> while True: . print("Введите 'Добавить' чтобы добавить два числа") . user_input = input(": ") . if user_input.lower() == "добавить": . while True: . numb1 = float(input("Введите первое число: ")) . numb2 = float(input("Введите второе число: ")) . print(str(numb1), str(numb2)) . Введите 'Добавить' чтобы добавить два числа : добавить Введите первое число: 10 Введите второе число: 5 10.0 5.0 Введите первое число: 15 Введите второе число: 3 15.0 3.0 Введите первое число: 123 Введите второе число: 10 123.0 10.0 Введите первое число:
Программа точно следует логике, которую вы в неё заложили, если исправить неправильно составленное условие.
То, что идёт после цикла, не пропускается - до него попросту не доходит очередь. Если вам нужно, чтобы после цикла выполнялся ещё какой-либо код, имеет смысл сделать выход из цикла:
>>> while True: . print("Введите 'Добавить' чтобы добавить два числа") . user_input = input(": ") . if user_input.lower() == "добавить": . while True: . numb1 = float(input("Введите первое число: ")) . numb2 = float(input("Введите второе число: ")) . print(str(numb1), str(numb2)) . if numb1 == numb2: # условие, при котором цикл заканчивается. Я использовал условие равенства двух чисел, у вас оно может быть другим . break . print('***** Бесконечный цикл закончен, код дальше выполняется') . Введите 'Добавить' чтобы добавить два числа : добавить Введите первое число: 3 Введите второе число: 2 3.0 2.0 Введите первое число: 3 Введите второе число: 5 3.0 5.0 Введите первое число: 5 Введите второе число: 5 5.0 5.0 ***** Бесконечный цикл закончен, код дальше выполняется Введите 'Добавить' чтобы добавить два числа :
Что касательно ошибки в вашем коде:
user_input = input() if user_input == "Добавить" or "добавить": print('Это условие выполняется всегда!')
Вы можете сами это проверить. Дело в том, что с учётом приоритетов операций условие выглядит так:
if (user_input == "Добавить") or ("добавить"): pass # do something
Логическое выражение user_input == "Добавить" может принимать как истинное значение, так и ложное, а вот логическое значение строки "добавить" всегда истинно, т.к. любая непустая строка имеет истинное булево представление. Если хотите использовать именно такой подход к решению, а не приведением к нижнему регистру, условие должно иметь вид:
if user_input in ("Добавить", "добавить"): pass # do something
Бесконечный цикл
Бесконечный цикл
tokenlist = s = input() s=s+' ' fstsym = "*/" sndsym = "+-" allsym = '+-*/' tempstr = "".
Бесконечный цикл программы
здравствуйте! помоги пожалуйста, сделал игру "Камень Ножницы Бумага". Хочу сделать бесконечный.
Прервать бесконечный цикл
Добрый день У меня получается бесконечный цикл подскажите как сделать0 чтобы например.
Бесконечный цикл с условиями
Здравствуйте, я всего месяц стала изучать программирование и мне нужна помощь! По задумке, эта.
Сделать бесконечный цикл с выходом по условию
Помогите сделать так чтобы программа не выключалась и числа можно было писать снова и снова x.
Регистрация: 08.08.2013
Сообщений: 286
Записей в блоге: 8
Добавлено через 18 минут
1 2 3 4 5 6
def gcd(a, b): return a if b == 0 else gcd(b, a % b) nok = 1 for cifra in range(1,21): nok = gcd(nok,cifra) print(nok)
Я быстро набросал на телефоне, по мне так выглядит красивее, все-таки программирование это искусство)
@ Monty_Python
Сообщение от akzo 
| Меню пользователя @ Monty_Python |
![]()
4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,102
Записей в блоге: 6
16*9*5*7*11*13*17*19
Каждое простое в такой степени, чтобы до 20.
Регистрация: 08.08.2013
Сообщений: 286
Записей в блоге: 8
Monty_Python, Не любите переменные с русскими названиями?)
akzo, ни один нормальный человек любит)
| Меню пользователя @ alex925 |
akzo, солидарен alex925, видел коды на python3, где переменные вообще по русски забиты. Господа это жесть!
| Меню пользователя @ Wolkodav |
akzo, ни один нормальный человек не любит)
P.S.А то до этого опписался.
| Меню пользователя @ alex925 |
Регистрация: 08.08.2013
Сообщений: 286
Записей в блоге: 8
Ну человеку без опыта работы простительно)
Добавлено через 3 минуты
Но все же спасибо за наставления, а то получить это замечание на работе будет не самым приятным)
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
akzo, Без минимальных знаний английского негде работать и с таким подходом тебя не взяли бы на работу.
В повседневной жизни программита постоянно приходиться сталкиваться с английским (код, форумы, статьи и т д) Так что учи, без этого никуда.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Бесконечный цикл ошибок, как исправить?
как исправить бесконечный цикл ошибок и при запуске сделать так, чтобы не подключалось больше 10.

Вывести маршрут максимальной стоимости: бесконечный цикл
Пытался решить задачу - не смог. Как понял - у меня бесконечный цикл Задача: Вывести маршрут.

Бесконечный цикл с "кнопкой" остановки
Есть ф-ция, которая выполняется каждые n секунд, в моём случае это запрос к апи вк, для удобства.
Начать вложенный цикл не с первого элемента и по условию вернуться в основной цикл
Добрый день. На самом деле, проблема чуть шире, чем в названии топика. Есть цикл, в котором идёт.
Цикл: Используя цикл while, выведите на экран для числа 2 его степени от 0 до 20
Используя цикл while, выведите на экран для числа 2 его степени от 0 до 20. Возведение в степень в.
Цикл: Написать программу которая находит минимальное значение в списке через цикл for.
Написать программу которая находит минимальное значение в списке через цикл for, то есть первое.