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()
Цикл while в Python
Из этого материала вы узнаете, что такое циклы while, как они могут становиться бесконечными, как использовать инструкцию else в цикле while и как прерывать исполнение цикла.
Управление потоком инструкций: цикл While в Python
Как и другие языки программирования Python включает несколько инструкций для управления потоком. Одна из таких — if else. Еще одна — циклы. Циклы используются в тех случаях, когда нужно повторить блок кода определенное количество раз.
Что такое цикл while в Python?
Цикл while используется в Python для неоднократного исполнения определенной инструкции до тех пор, пока заданное условие остается истинным. Этот цикл позволяет программе перебирать блок кода.
while test_expression: body of while
Сначала программа оценивает условие цикла while. Если оно истинное, начинается цикл, и тело while исполняется. Тело будет исполняться до тех пор, пока условие остается истинным. Если оно становится ложным, программа выходит из цикла и прекращает исполнение тела.
Рассмотрим пример, чтобы лучше понять.
a = 1 while a 10: print('Цикл выполнился', a, 'раз(а)') a = a+1 print('Цикл окончен')
Цикл выполнился 1 раз Цикл выполнился 2 раз Цикл выполнился 3 раз Цикл выполнился 4 раз Цикл выполнился 5 раз Цикл выполнился 6 раз Цикл выполнился 7 раз Цикл выполнился 8 раз Цикл выполнился 9 раз Цикл окончен
Бесконечный цикл while в Python
Бесконечный цикл while — это цикл, в котором условие никогда не становится ложным. Это значит, что тело исполняется снова и снова, а цикл никогда не заканчивается.
Следующий пример — бесконечный цикл:
a = 1 while a==1: b = input('Как тебя зовут?') print('Привет', b, ', Добро пожаловать')
Если запустить этот код, то программа войдет в бесконечный цикл и будет снова и снова спрашивать имена. Цикл не остановится до тех пор, пока не нажать Ctrl + C .
Else в цикле while
В Python с циклами while также можно использовать инструкцию else . В этом случае блок в else исполняется, когда условие цикла становится ложным.
a = 1 while a 5: print('условие верно') a = a + 1 else: print('условие неверно')
Этот пример демонстрирует принцип работы else в цикле while.
условие верно условие верно условие верно условие верно условие неверно
Программа исполняет код цикла while до тех, пока условие истинно, то есть пока значение a меньше 5. Поскольку начальное значение a равно 1, а с каждым циклом оно увеличивается на 1, условие станет ложным, когда программа доберется до четвертой итерации — в этот момент значение a изменится с 4 до 5. Программа проверит условие еще раз, убедится, что оно ложно и исполнит блок else , отобразив «условие неверно».
Прерывания цикла while в Python
В Python есть два ключевых слова, с помощью которых можно преждевременно остановить итерацию цикла.
-
Break — ключевое слово break прерывает цикл и передает управление в конец цикла
a = 1 while a 5: a += 1 if a == 3: break print(a) # 2
a = 1 while a 5: a += 1 if a == 3: continue print(a) # 2, 4, 5
Выход из бесконечного цикла while True по вводу значения с клавиатуры
Добрый день, что то никак не могу нагуглить, помогите пожалуйста. Осваиваю Python 3, стоит задача в бесконечном цикле:
while a=1: print('Something')
который можно прервать вводом значения a:
a = input('Enter a')
Как это правильно сделать? В голову пришло разделить это с помощью multiprocessing на два отдельных потока , но на функции с a=input() код выпадает в ошибку. Или я не туда пошел? Спасибо UPD. для понятности выкладываю упрощенный код.
. class AB: def __call__(self): while a = 1: print('Hello') class CD: def __call__(self): a = input('Enter a=') if __name__ == __main__: a = AB() b = CD() p1 = Process(target = a) p2 = Process(target = b) p1.start() p2.start() p1.join() p2.join()
Этот код потоки запускает, цикл работает а на input() ошибка:
input('Enter a=') EOFError:EOF when reading line
Отслеживать
49.3k 17 17 золотых знаков 57 57 серебряных знаков 101 101 бронзовый знак
задан 1 мар 2018 в 10:44
Anton Pozdnyakov Anton Pozdnyakov
31 1 1 золотой знак 1 1 серебряный знак 4 4 бронзовых знака
В чем конкретно проблема? В операторе break или в неблокирующем чтении нажатой клавиши?
1 мар 2018 в 10:50
Если я верно понял ваш вопрос - то второе.
1 мар 2018 в 11:14
если интересно, то о EOFError в дочернем процессе, отдельный вопрос задайте. Связанный вопрос Is there any way to pass 'stdin' as an argument to another process in python?
1 мар 2018 в 11:58
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Чтобы прервать Питон-скрипт, запущенный в консоли, не нужно дочерние процессы запускать, достаточно Ctrl+C нажать:
while True: print('Something')
Если вы не хотите на traceback с KeyboardInterrupt исключением смотреть, можно свой обработчик сигнала установить перед запуском цикла:
import os import signal signal.signal(signal.SIGINT, lambda *_: os._exit(1)) # exit on Ctrl+C
или обернуть в try/except KeyboardInterrupt код в основном потоке.
Чтобы произвольный ввод принимать пока цикл выполняется, можно его в отдельном потоке запустить:
import threading def loop(): while True: print('something') threading.Thread(target=loop, daemon=True).start() input('Press to exit.')
В этом случае, выход происходит по нажатию на , так как поток объявлен как daemon=True , поэтому он не переживёт основной поток (в котором мы ввод ожидали). Если убрать daemon=True , то дочерний поток продолжил бы выполняться и по прекращению основного потока.
Если вы не хотите из программы выходить по окончанию цикла, то можно явное событие использовать, чтобы прервать цикл:
import threading def loop(done, interval=1): while not done.wait(interval): print('something') done = threading.Event() threading.Thread(target=loop, args=[done], daemon=True).start() input('Press Enter to exit.') done.set() # break the loop
Если пауза между итерациями вам не нужна, то просто while not done.is_set(): условие можно использовать для цикла.
Как выйти из бесконечного цикла в state, получив новое сообщение aiogram selenium?
Мне нужен бесконечный цикл, который обновляет страницу и проверяет date. Так же мне нужно, чтобы этот бесконечный цикл прерывался, если сообщение = отмена. через отдельный хендлер не работает, т.к. открыт браузер и цикл
async def checker_start(msg: types.Message, state: FSMContext): if msg.text.title() == 'Да': parser = AvitoParcer() await FSMAd.ad.set() while True: parser.update_page() date = parser.get_time() if date == '1 минуту назад' or date == 'Несколько секунд назад' or date == '2 минуты назад': date = parser.get_time() name = parser.get_name() desc = parser.get_desc() image_url = parser.get_image_url() url = parser.get_url() price = parser.get_price() await bot.send_photo( msg.from_user.id, caption=f'Найдено новое объявление. Выложено:\n' f'\n' f'\n' f'\n' f'ссылка - ', photo=f'')
- Вопрос задан более года назад
- 197 просмотров
1 комментарий
Простой 1 комментарий