python 3.5: выход из цикла if (или других циклов)
При запуске программы пользователю предлагается ввести номер. Если число равно 1, выйдите из программы. Если число не равно 1, выведите его.
Интересно, как это понять?
Я использую python 3.5.
Мой код такой. Я всегда получаю ошибку: 'break' outside loop
Как я могу это исправить?
x = input('Please input a number: ')
if x == '1':
print('quit')
break
else:
continue
print(x)
python
python-3.x Поделиться Источник Dawn 07 июля 2016 в 18:40
3 ответа
- Выход из вложенных циклов на нужном уровне
Возможный Дубликат : Выход из вложенного цикла Как выйти из вложенных циклов на определенном уровне. Например: foreach (item in Items) { foreach (item2 in Items2) { // Break; => we just exit the inner loop // while we need to break both loops. } } А если есть еще вложенные циклы и мы хотим…
- Выход из вложенных циклов в javascript: throw vs return
при разрыве вложенных циклов в javascript было бы лучше (как в более быстром, менее проблематичном или более популярном) разбить с помощью try-catch-throw, как это делают многие люди в python, или иметь самоисполняющуюся функцию, которая возвращается из циклов?
1
Вы получаете разрыв ошибки вне цикла, потому что разрыв ключевого слова используется для выхода из цикла. Вы используете его вне цикла, поэтому вы получаете ошибку. Для выхода из приложения не следует использовать break. Вместо этого вы должны использовать:
sys.exit(0)
Итак, теперь ваш код должен выглядеть следующим образом:
x = input('Please input a number: ')
if x == '1':
print('quit')
sys.exit(0)
else:
print(x)
Вам также не нужно продолжать в операторе else. Вы можете просто оставить оператор else пустым, и программа продолжит работу, или вы можете поместить print(x)
внутри оператора else, как я сделал с вашим кодом.
Поделиться Aiden Grossman 07 июля 2016 в 18:45
0
Это не то, как вы выходите из приложения. Попробуйте sys.exit(error)
, где error-это номер ошибки.
break
позволяет избежать циклов, как это:
while True:
line = 'test'
if line = 'test':
break
print "now I'm not in the loop"
Поделиться Athena 07 июля 2016 в 18:46
0
В вашем коде нет цикла, поэтому вам нужно добавить оператор while. Установите условие в True, чтобы оно всегда выполнялось. Вам также не нужен оператор else continue, так как это пропустит печать(x). X автоматически преобразуется в целое число, поэтому приведите его к строке.
while True:
x = input('Please input a number: ')
if str(x) == "1":
print('quit')
break
print(x)
Поделиться CamJohnson26 07 июля 2016 в 18:53
- Выход из вложенных циклов for
У меня есть два цикла for хочу выйти из двух циклов мой контроль находится во внутреннем цикле см. приведенный ниже код for(condition) { for (condition) { if(condition) from here i want to exit from these loops } }
- Python: выход из нескольких уровней цикла
У меня есть этот псевдокод для тестера примитивности Миллера-Рабина: function isPrime(n, k=5) if n < 2 then return False for p in [2,3,5,7,11,13,17,19,23,29] if n % p == 0 then return n == p s, d = 0, n-1 while d % 2 == 0 s, d = s+1, d/2 for i from 0 to k x = powerMod(randint(2, n-1), d, n) if…
Похожие вопросы:
отладчик ipdb, выход из цикла
Есть ли команда выйти из циклов (скажем, на время или на время) во время отладки на ipdb без необходимости использовать точки останова из них? Я использую команду until , чтобы выйти из понимания…
Пакетный выход из цикла после определенного количества циклов
Я хочу выйти из своего цикла при определенном количестве циклов (10 петель). Я просмотрел несколько вещей в Google, но петля должна была сделать что-то еще, так что я был немного потерян. Вот мой…
выход на несколько циклов
в моем проекте у меня есть несколько записей, снятых с микрофона iPhones, которые я зацикливаю с помощью этого кода -(IBAction)loop1{ NSError *error; audioPlayer = [[AVAudioPlayer alloc]…
Выход из вложенных циклов на нужном уровне
Возможный Дубликат : Выход из вложенного цикла Как выйти из вложенных циклов на определенном уровне. Например: foreach (item in Items) { foreach (item2 in Items2) { // Break; => we just exit the…
Выход из вложенных циклов в javascript: throw vs return
при разрыве вложенных циклов в javascript было бы лучше (как в более быстром, менее проблематичном или более популярном) разбить с помощью try-catch-throw, как это делают многие люди в python, или…
Выход из вложенных циклов for
У меня есть два цикла for хочу выйти из двух циклов мой контроль находится во внутреннем цикле см. приведенный ниже код for(condition) { for (condition) { if(condition) from here i want to exit from…
Python: выход из нескольких уровней цикла
У меня есть этот псевдокод для тестера примитивности Миллера-Рабина: function isPrime(n, k=5) if n < 2 then return False for p in [2,3,5,7,11,13,17,19,23,29] if n % p == 0 then return n == p s, d…
выход из вложенного цикла без goto
как я могу выйти из вложенных while() или for() без goto? например, если я использую три цикла, как показано ниже, в функции: void myfun(){ for (;;) { while( true ) { for (;;) { //what is the exit…
Выход из внешнего цикла из подпрограммы без логической переменной
Следующий минимальный пример: L1: do while(.true.) L2: do while(.true.) if(something=.true.) exit L1 end do L2 end do L1 Итак, теперь я хочу записать внутренний цикл L2 в подпрограмму внутри…
Выход из вложенных циклов в R
Очень простой пример кода (только для демонстрации, никакого использования вообще): repeat { while (1 > 0) { for (i in seq(1, 100)) { break # usually tied to a condition } break } break }…
break, continue, pass — Документация Python для сетевых инженеров 3.0
В Python есть несколько операторов, которые позволяют менять поведение циклов по умолчанию.
Оператор break
Оператор break позволяет досрочно прервать цикл:
- break прерывает текущий цикл и продолжает выполнение следующих выражений
- если используется несколько вложенных циклов, break прерывает внутренний цикл и продолжает выполнять выражения, следующие за блоком * break может использоваться в циклах for и while
Пример с циклом for:
In [1]: for num in range(10): ...: if num < 7: ...: print(num) ...: else: ...: break ...: 0 1 2 3 4 5 6
Пример с циклом while:
In [2]: i = 0 In [3]: while i < 10: ...: if i == 5: ...: break ...: else: ...: print(i) ...: i += 1 ...: 0 1 2 3 4
Использование break в примере с запросом пароля (файл check_password_with_while_break.py):
username = input('Введите имя пользователя: ' ) password = input('Введите пароль: ' ) while True: if len(password) < 8: print('Пароль слишком короткий\n') elif username in password: print('Пароль содержит имя пользователя\n') else: print('Пароль для пользователя {} установлен'.format(username)) # завершает цикл while break password = input('Введите пароль еще раз: ')
Теперь можно не повторять строку password = input('Введите пароль еще раз: ')
в каждом ответвлении,
достаточно перенести ее в конец цикла.
И, как только будет введен правильный пароль, break выведет программу из цикла while.
Оператор continue
Оператор continue возвращает управление в начало цикла. То есть, continue позволяет «перепрыгнуть» оставшиеся выражения в цикле и перейти к следующей итерации.
Пример с циклом for:
In [4]: for num in range(5): ...: if num == 3: ...: continue ...: else: ...: print(num) ...: 0 1 2 4
In [5]: i = 0 In [6]: while i < 6: ....: i += 1 ....: if i == 3: ....: print("Пропускаем 3") ....: continue ....: print("Это никто не увидит") ....: else: ....: print("Текущее значение: ", i) ....: Текущее значение: 1 Текущее значение: 2 Пропускаем 3 Текущее значение: 4 Текущее значение: 5 Текущее значение: 6
Использование continue в примере с запросом пароля (файл check_password_with_while_continue.py):
username = input('Введите имя пользователя: ') password = input('Введите пароль: ') password_correct = False while not password_correct: if len(password) < 8: print('Пароль слишком короткий\n') elif username in password: print('Пароль содержит имя пользователя\n') else: print('Пароль для пользователя {} установлен'.format(username)) password_correct = True continue password = input('Введите пароль еще раз: ')
Тут выход из цикла выполнятся с помощью проверки флага password_correct. Когда был введен правильный пароль, флаг выставляется равным True, и с помощью continue выполняется переход в начало цикла, перескочив последнюю строку с запросом пароля.
Результат выполнения будет таким:
$ python check_password_with_while_continue.py Введите имя пользователя: nata Введите пароль: nata12 Пароль слишком короткий Введите пароль еще раз: natalksdjflsdjf Пароль содержит имя пользователя Введите пароль еще раз: asdfsujljhdflaskjdfh Пароль для пользователя nata установлен
Оператор pass
Оператор pass
ничего не делает. Фактически, это такая заглушка для
объектов.
Например, pass
может помочь в ситуации, когда нужно прописать
структуру скрипта. Его можно ставить в циклах, функциях, классах. И это
не будет влиять на исполнение кода.
Пример использования pass:
In [6]: for num in range(5): ....: if num < 3: ....: pass ....: else: ....: print(num) ....: 3 4
Python выход из цикла for
В этой статье я расскажу о циклах for и while, операторах break и continue, а также о слове else, которое, будучи употребленное с циклом, может сделать программный код несколько более понятным.
Цикл while
While – один из самых универсальных циклов в Python, поэтому довольно медленный. Выполняет тело цикла до тех пор, пока условие цикла истинно.
Цикл for
Цикл for уже чуточку сложнее, чуть менее универсальный, но выполняется гораздо быстрее цикла while. Этот цикл проходится по любому итерируемому объекту (например строке или списку), и во время каждого прохода выполняет тело цикла.
Оператор continue
Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла (for или while)
Оператор break
Оператор break досрочно прерывает цикл.
Волшебное слово else
Слово else, примененное в цикле for или while, проверяет, был ли произведен выход из цикла инструкцией break, или же «естественным» образом. Блок инструкций внутри else выполнится только в том случае, если выход из цикла произошел без помощи break.
Циклы позволяют повторять некоторое действие в зависимости от соблюдения некоторого условия.
Цикл while
Первый цикл, который мы рассмотрим, это цикл while . Он имеет следующее формальное определение:
После ключевого слова while указывается условное выражение, и пока это выражение возвращает значение True , будет выполняться блок инструкций, который идет далее.
Все инструкции, которые относятся к циклу while, располагаются на последующих строках и должны иметь отступ от начала строки.
В данном случае цикл while будет продолжаться, пока переменная choice содержит латинскую букву «Y» или «y».
Сам блок цикла состоит из двух инструкций. Сначала выводится сообщение «Привет», а потом вводится новое значение для переменной choice. И если пользователь нажмет какую-то другую клавишу, отличную от Y, произойдет выход из цикла, так как условие choice.lower() == «y» вернет значение False. Каждый такой проход цикла называется итерацией.
Также обратите внимание, что последняя инструкция print(«Работа программы завешена») не имеет отступов от начала строки, поэтому она не входит в цикл while.
Дугой пример – вычисление факториала:
Здесь вводит с консоли некоторое число, и пока число-счетчик i не будет больше введенного числа, будет выполняться цикл, в котором происходит умножения числа factorial.
Цикл for
Другой тип циклов представляет конструкция for . Цикл for вызывается для каждого числа в некоторой коллекции чисел. Коллекция чисел создается с помощью функции range() . Формальное определение цикла for:
После ключевого слова for идет переменная int_var, которая хранит целые числа (название переменной может быть любое), затем ключевое слово in , вызов функции range() и двоеточие.
А со следующей строки располагается блок инструкций цикла, которые также должны иметь отступы от начала строки.
При выполнении цикла Python последовательно получает все числа из коллекции, которая создается функцией range, и сохраняет эти числа в переменной int_var. При первом проходе цикл получает первое число из коллекции, при втором – второе число и так далее, пока не переберет все числа. Когда все числа в коллекции будут перебраны, цикл завершает свою работу.
Рассмотрим на примере вычисления факториала:
Вначале вводим с консоли число. В цикле определяем переменную i, в которую сохраняются числа из коллекции, создаваемой функцией range.
Функция range здесь принимает два аргумента – начальное число коллекции (здесь число 1) и число, до которого надо добавлять числа (то есть number +1).
Допустим, с консоли вводится число 6, то вызов функции range приобретает следующую форму:
Эта функция будет создавать коллекцию, которая будет начинаться с 1 и будет последовательно наполняться целыми числами вплоть до 7. То есть это будет коллекция [1, 2, 3, 4, 5, 6].
При выполнении цикла из этой коллекции последовательно будут передаваться числа в переменную i, а в самом цикле будет происходить умножение переменной i на переменную factorial. В итоге мы получим факториал числа.
Консольный вывод программы:
Функция range
Функция range имеет следующие формы:
range(stop) : возвращает все целые числа от 0 до stop
range(start, stop) : возвращает все целые числа в промежутке от start (включая) до stop (не включая). Выше в программе факториала использована именно эта форма.
range(start, stop, step) : возвращает целые числа в промежутке от start (включая) до stop (не включая), которые увеличиваются на значение step
Примеры вызовов функции range:
Например, выведем последовательно все числа от 0 до 4:
Вложенные циклы
Одни циклы внутри себя могут содержать другие циклы. Рассмотрим на примере вывода таблицы умножения:
Внешний цикл for i in range(1, 10) срабатывает 9 раз, так как в коллекции, возвращаемой функцией range, 9 чисел. Внутренний цикл for j in range(1, 10) срабатывает 9 раз для одной итерации внешнего цикла, и соответственно 81 раз для всех итераций внешнего цикла.
В каждой итерации внутреннего цикла на консоль будет выводится произведение чисел i и j. В итоге мы получим следующий консольный вывод:
Выход из цикла. break и continue
Для управления циклом мы можем использовать специальные операторы break и continue . Оператор break осуществляет выход из цикла. А оператор continue выполняет переход к следующей итерации цикла.
Оператор break может использоваться, если в цикле образуются условия, которые несовместимы с его дальнейшим выполнением. Рассмотрим следующий пример:
Здесь мы имеем дело с бесконечным циклом, так как условие while True всегда истинно и всегда будет выполняться. Это популярный прием для создания программ, которые должны выполняться неопределенно долго.
В самом цикле получаем ввод с консоли. Мы предполагаем, что пользователь будет вводить число – условную сумму денег для обмена. Если пользователь вводит букву «Y» или «y», то с помощью оператора break выходим из цикла и прекращаем работу программы. Иначе делим введенную сумму на обменный курс, с помощью функции round округляем результат и выводим его на консоль. И так до бесконечности, пока пользователь не захочет выйти из программы, нажав на клавишу Y.
Консольный вывод программы:
Но что, если пользователь введет отрицательное число? В этом случае программа также выдаст отрицательный результат, что не является корректным поведением. И в этом случае перед вычислением мы можем проверить значение, меньше ли оно нуля, и если меньше, с помощью оператора continue выполнить переход к следующей итерации цикла без его завершения:
Также обращаю внимание, что для определения, относится ли инструкция к блоку while или к вложенной конструкции if, опять же используются отступы.
И в этом случае мы уже не сможем получить результат для отрицательной суммы:
Важной частью структурного программированию помимо операторов условий считаются циклы. Они помогают автоматизировать последовательные задачи в программе, а именно: повторить выполнение определенных участков кода. Такая необходимость возникает достаточно часто, когда нужно сделать что-нибудь много раз, тем самым, циклы упрощают эту задачу.
Понятие циклов
В нашей жизни мы достаточно часто сталкиваемся с цикличными задачами, к ним можно отнести любые списки, будь-то: продукты, задачи на день, запланированные экзамены. И действительно, когда мы приходим в магазин, то покупаем все, что есть в нашем списке, не останавливаясь, пока не сделаем этого.
В программировании циклы позволяют повторять некоторое действие в зависимости от соблюдения заданного условия. Таким образом организуется исполнение многократной последовательности инструкций.
Есть еще несколько важных понятий, которые нужно знать:
- Телом цикла называется та последовательность кода, которую нужно выполнить несколько раз.
- Единоразовое выполнение – это итерация.
Python позволяет также создавать вложенные циклы. Так, сначала программа запустит внешний и в первой его итерации перейдет во вложенный. Затем она снова вернется к началу внешнего и снова вызовет внутренний. Это будет происходить до тех пор, пока последовательность не завершится или не прервется. Такие циклы полезны в том случае, если нужно перебрать определенное количество элементов в списке.
В Python есть только два цикла: for и while. Первый используется по большей мере в тех случаях, когда нужно написать многоуровневую программу с множеством условий.
Цикл «for»
Цикл for в Python 3 выполняет написанный код повторно согласно введенной переменной или счетчику. Он используется только тогда, когда необходимо совершить перебор элементов заранее известное число раз. Что это значит? У нас имеется список, сначала из него берется первый элемент, потом – второй и так далее, но с каждым из них совершается действие, которое указано в теле for. Примерно это выглядит так:
For может содержать данные разных типов: цифры, слова и пр. Рассмотрим пример:
На экране после запуска появится такая запись:
Для упрощения часто используется функция range(), или диапазон. В циклах она указывает на необходимое количество повторов последовательности, уточняя, какие именно элементы из списка for, нам необходимы в данный момент. В скобках может быть указано от одного до трех чисел:
- одно указывает на то, что нужно проверить все числа от 0 и до него;
- два говорят о том, что перебрать нужно все числа, находящиеся между ними;
- три числа сгенерируют список от первого до второго, но с шагом, равным третьей цифре.
Рассмотрим пример. Теоретически вы можете записать так:
Но это слишком затратно, особенно если чисел слишком много, поэтому лучше сделать так, используя указанный выше range():
И в первом, и во втором случае на экране появится такая последовательность:
Цикл «while»
While с английского языка переводится, как «до тех пор, как». Это достаточно универсальный цикл, он немного похож на условие if, но его код выполняется не один раз. Его условие записывается до тела цикла. После того, как оно выполнено первый раз, программа возвращается к заголовку и снова повторяет все действия. Этот процесс заканчивается тогда, когда условие цикла больше не может быть соблюдено, иными словами перестает быть истинным. Тем, что заранее неизвестно количество проверок, он отличается от предыдущего цикла for. Кстати, еще его называют циклом с предусловием.
Запись цикла while в Python выглядит так:
Приведем пример использования этого цикла:
Здесь переменной присваивается значение 0, после чего начинается цикл, в котором проверяется условие, чтобы число было меньше 6. В теле цикла также содержится две инструкции: первая выводит само число на экран, а вторая увеличивает его значение на два. Цикл, таким образом, выполняется, пока условие продолжает быть истинным. На экране перед вами появится следующая последовательность чисел:
Обычно в ней есть смысл, только если указана инструкция break, но программа работает и без последней. Посмотрим на код:
Переменная – 3, задается условие, что пока она меньше 7, нужно выводить ее и выражение «меньше 7», затем прибавлять к ней 1. В тех случаях, когда она уже становится равной 7, то в ход пойдет условие, указанное в else, и на экране появится, что переменная не меньше 7. В результате выполнения этого кода мы увидим:
Инструкции break и continue
Оператор break используется для выхода из цикла Python — прерывает его досрочно. Так, если во время выполнения кода, программа натыкается на break, то она сразу прекращает цикл и выходит из него, минуя else. Это необходимо, например, если при выполнении инструкций была обнаружена ошибка, и дальнейшая работа бессмысленна. Посмотрим на пример его применения:
Его реализация будет выглядеть так:
После этого выполнение программы будет прервано.
Другая инструкция, которая может менять цикл, – это continue. Если она указана внутри кода, то все оставшиеся инструкции до конца цикла пропускаются и начинается следующая итерация.
В целом, не следует слишком увлекаться использованием этих инструкций.
Цикл с постусловием
Во многих других языках программирования существуют циклы с постусловием, обычно они описываются так:
- repeat [тут исполняемый код] until [условия продолжения];
- do [тут исполняемый код] while [условия продолжения];
Цикл while может стать циклом с постусловием, тогда его примерный вид будет таким:
Так получается, что сначала дается тело цикла, а потом задается условие.
Бесконечные циклы
Бесконечными циклами в программировании называются те, в которых условие выхода их них не выполняется.
Цикл while становится бесконечным, когда его условие не может быть ложным. Например, при помощи него можно реализовать программу «Часы», которая бесконечно отображает время.
Примером реализации в Python бесконечного цикла будет такой код:
Очевидно, что заданная переменная всегда останется цифрой 3, поскольку никак не задано ее увеличение, поэтому на экране просто будет появляться слово «Привет».
Зачастую цикл не должен быть бесконечным, поскольку это причина неустойчивой работы программы. Для того чтобы выйти из него, нужно нажать комбинацию клавиш: CTRL+C. При этом программы, из которых нет выхода, также существуют. К ним относятся: операционные системы, прошивки микроконтроллеров.
Вложенные циклы
Рассмотрим вложенные циклы в Python. Для реализации можно использовать как вложенные for, так и while.
Про них мы уже писали выше. Здесь же хочется привести пару примеров использования. Они очень часто используются при обработке двухмерных списков.
Вот пример создания двумерного списка и вывода его на экран с помощью print.
Нельзя с помощью одного break в Python выйти сразу из двух циклов. В этом случае нужно во внешнем цикле создать условие следующим образом.
Здесь приведен пример использования в Python цикла в цикле. Оба бесконечны. Все будет выполняться бесконечно, до тех пор, пока функция doSomething не вернет True. После этого поочередно сработают break во внешнем и во внутреннем циклах.
Заключение
Как правило, команды в коде выполняются последовательно: одна за другой. Именно поэтому, когда есть необходимость выполнить тело кода несколько раз, используются циклы. Циклы для Python очень значимы, именно они делают повторение простым, логичным и очень понятным.
python — Выход из нескольких циклов
Вариант первый, некрасивый
Для выхода из цикла до его нормального завершения в Python используется оператор break
:
for item in items:
if some_condition:
break
Для того, чтобы выйти из нескольких циклов по условию, выполнившемуся во внутреннем цикле, используется флаг выхода — переменная, которая изначально имеет значение False
, а при необходимости выйти из цикла преждевременно принимает значение True
:
flag = False
for outer in outer_list:
for inner in inner_list:
if some_condition:
flag = True
break
if flag:
break
Таким образом можно выйти из любого количества вложенных циклов, нужно лишь добавлять проверку на флаг выхода в конец каждого.
Вариант второй, красивый
Вам стоит немного поменять структуру вашего кода. Для начала вынесите проверки на вхожденения слов из blacklist
и whitelist
в отдельную функцию:
def contains_words(text, words_list):
for word in words_list:
if text.find(word) != -1:
return True
return False
Теперь проверка на вхождение слов из whitelist
и невхождение слов из blacklist
будет выглядеть так:
for text in some_text:
if contains_words(text, whitelist) and not contains_words(text, blacklist):
print("Found")
else:
print("Not found")
Если выражение contains_words(text, whitelist)
вернёт False
, Python не станет вычислять значение выражения not contains_words(text, blacklist)
, так как, каким бы оно ни было, значение выражения contains_words(text, whitelist) and not contains_words(text_blacklist)
всегда будет False
.
Переписав код таким образом вы сохраните изначально задуманную функциональность, при этом значительно повысив читаемость кода и упростив возможные изменения в будущем.
http://ideone.com/bOO2RM
Как выйти из цикла while? Ru Python
У меня возникли проблемы с выходом из цикла while. Это простая программа, которая печатает hello
если случайное значение больше 5. Программа работает отлично один раз, но когда я пытаюсь запустить ее снова, она переходит в бесконечный цикл.
Помогает ли следующий код?
while True: if a > 5 : print ("aHello") count = count + 1 if count == 20 : break else : a = randint(0,10) if b > 5 : print ("bHello") count = count + 1 if count == 20 : break else : b = randint(0,10) if c > 5 : print ("cHello") count = count + 1 if count == 20 : break else : c = randint(0,10)
Вы должны проверять значение счетчика после его увеличения каждый раз.
Ваш цикл while может увеличивать счетчик переменных на 0, 1, 2 или 3. Это может привести к тому, что счет будет равен значению ниже 20 для значения более 20.
Например, если значение count равно 18, и происходит следующее:
a > 5, count += 1 b > 5, count += 1 c > 5, count += 1
После этих операций значение счета будет равно 18 + 3 = 21, что не равно 20. Следовательно, значение условия == 20 никогда не будет выполнено.
Чтобы исправить ошибку, вы можете либо заменить строку
if count == 20
с
if count >= 20
или просто изменить логику программы внутри цикла while.
Условие «break» может завершиться неудачно, если два или более значения переменных a
, b
и c
больше 5. В этом случае счет будет увеличиваться более одного раза, а счет будет> 20, а цикл никогда не будет прекратить. Вы должны изменить:
if count == 20 :
в
if count >= 20:
В конце итерации count
может быть больше 20
из-за нескольких приращений. Поэтому я бы обновил последний оператор if:
if count >= 20:
чувствовать себя в безопасности.
Если ваша цель состоит в том, чтобы остановить подсчет, когда count
>= 20
, то вы должны использовать это условие для своего цикла while, и вам не придется вообще ломаться, так как вы все равно ломаете в конце цикла.
Новый оператор while будет выглядеть так:
while count < 20: # increment count
а затем вне цикла while вы можете сбросить счет до 0
если хотите снова использовать его для чего-то еще.
так как вы увеличиваете count
2 или 3 раза за одну итерацию, он может пропустить мимо вашего count == 20
Вот один из способов получить ровно 20 строк.
from random import seed, randint seed() a = randint(0,10) b = randint(0,10) c = randint(0,10) count = iter(range(20)) while True: try: if a > 5: next(count) print ("aHello") else: a = randint(0,10) if b > 5: next(count) print ("bHello") else: b = randint(0,10) if c > 5: next(count) print ("cHello") else: c = randint(0,10) except StopIteration: break
Обратите внимание, что в этом коде по-прежнему много повторений. Хранение переменных a, b, c в list
вместо отдельных переменных позволило бы упростить код
Как сделать «двойной break», то есть выйти из вложенного цикла, в Python?
Условие:Перебрать все пары символов в строке, и остановиться при нахождении двух одинаковых символов.
Решение достаточно очевидное, но возникает вопрос:
s = "какая-то строка"
for i in range(len(s)):
for j in range(i+1, len(s)):
if s[i] == s[j]:
print(i, j)
break # Как выйти сразу из двух циклов?
Если бы мы программировали, например, на Java, то мы могли бы воспользоваться механизмом меток:
outterLoop: for(int i=0; i<n; i++){
for(int j=i; j<n; j++){
if(/*something*/){
break outterLoop;
}
}
}
Однако в Python такого механизма нет. Требуется предложить наиболее удобное в использовании и читаемое решение.
Возможные варианты ответа
- Поместить цикл в тело функции, а затем сделать
return
из неё:def func(): s="teste" for i in range(len(s)): for j in range(i+1, len(s)): if s[i]==s[j]: print(i,j) return func()
Почему это плохая идея: разумеется, сама задача в условии — лишь абстрактный пример. В жизни циклов может быть гораздо больше, и создавать по функции для каждого из них как-то неестественно, не так ли?
- Выбросить исключение и поймать его снаружи цикла:
try: s="teste" for i in range(len(s)): for j in range(i+1, len(s)): if s[i]==s[j]: print(i,j) raise Exception() except: print("the end")
Почему это плохая идея: здесь мы используем механизм исключений как особую форму
goto
, но ведь на самом деле ничего исключительного в коде не произошло — это обычная ситуация. Как минимум, причины такого злоупотребления этим механизмом будут непонятны другим программистам. - Можно создать булевую переменную, которая будет хранить информацию о том, нужно ли выходить из внешнего цикла на данной итерации:
exitFlag=False s="teste" for i in range(len(s)): for j in range(i+1, len(s)): if s[i]==s[j]: print(i,j) exitFlag=True break if(exitFlag): break
Почему это плохая идея: из всех перечисленных выше идей эта, пожалуй, лучшая. Тем не менее, это весьма низкоуровневый подход, и в языке Python есть возможность реализовать задуманное гораздо лучше.
- Использовать вместо двух циклов
for
одинwhile
:s="teste" i=0 j=1 while i < len(s): if s[i] == s[j]: print(i, j) break j=j+1 i=i+j//len(s) j=j%len(s)
Почему это плохая идея: вам не кажется, что такой код читается хуже всех предложенных вариантов?
Решение на пятёрку
Давайте ещё раз внимательно прочитаем условие:
Перебрать все пары символов в строке, и остановиться при нахождении двух одинаковых символов.
Где там вообще хоть слово про двойной цикл или про перебор двух индексов? Нам нужно перебирать пары. Значит, по идее, мы должны написать что-то вроде этого:
s = "teste"
for i, j in unique_pairs(len(s)):
if s[i] == s[j]:
print(i, j)
break
Отлично, так мы будем перебирать пары. Но как нам добиться именно такой формы записи? Всё очень просто, нужно создать генератор. Делается это следующим образом:
def unique_pairs(n):
for i in range(n):
for j in range(i+1, n):
yield i, j
«Как это работает?» — спросите вы. Всё просто. При вызове unique_pairs(int)
код в теле функции не вычисляется. Вместо этого будет возвращён объект генератора. Каждый вызов метода next()
этого генератора (что неявно происходит при каждой итерации цикла for
) код в его теле будет выполняться до тех пор, пока не будет встречено ключевое слово yield
. После чего выполнение будет приостановлено, а метод вернёт указанный объект (здесь yield
действует подобно return). При следующем вызове функция начнёт выполняться не с начала, а с того места, на котором остановилась в прошлый раз. При окончании перебора будет выброшено исключение StopIteration
.
Итак, самый true pythonic way в решении этой задачи:
def unique_pairs(n):
for i in range(n):
for j in range(i+1, n):
yield i, j
s = "a string to examine"
for i, j in unique_pairs(len(s)):
if s[i] == s[j]:
print(i, j)
break
UPD: в комментариях подсказывают, что такой генератор уже реализован в стандартной библиотеке:
itertools.combinations(s, 2)
Что же, для данной задачи это действительно более pythonic решение. Хочется отметить, что целью статьи было скорее познакомить новичков с механизмом генераторов, нежели действительно решить проблему, заявленную в первом абзаце 😉
Свои варианты предлагайте в комментариях!
Разбор взять из статьи «Breaking out of two loops»
Команда break и выход из цикла
Чтобы немедленно прервать цикл while без выполнения оставшегося кода в цикле независимо от состояния условия, используйте команду break. Команда break управляет ходом выполнения программы; она позволит вам управлять тем, какая часть кода выполняется, а какая нет.
Рассмотрим пример — программу, которая спрашивает у пользователя, в каких городах он бывал. Чтобы прервать цикл while, программа выполняет команду break, как только пользователь введет значение ‘quit’:
cities.py
prompt = » Please enter the name of a city you have visited:»
prompt += » (Enter ‘quit’ when you are finished.) «
(1) while True:
. .city = input(prompt)
. .
. .if city == ‘quit’:
. . . .break
. .else:
. . . .print(«I’d love to go to » + city.title() + «!»)
Цикл, который начинается с while True (1) , будет выполняться бесконечно — если только в нем не будет выполнена команда break. Цикл в программе продолжает запрашивать у пользователя названия городов, пока пользователь не введет строку ‘quit’. При вводе строки ‘quit’ выполняется команда break, по которой Python выходит из цикла:
Please enter the name of a city you have visited:
(Enter ‘quit’ when you are finished.) New York
I’d love to go to New York!
Please enter the name of a city you have visited:
(Enter ‘quit’ when you are finished.) San Francisco
I’d love to go to San Francisco!
Please enter the name of a city you have visited:
(Enter ‘quit’ when you are finished.) quit
примечание
Команда break может использоваться в любых циклах Python. Например, ее можно включить в цикл for для перебора элементов словаря.
Как выйти из цикла? — FAQ по Python
Не используется итератор . Если вы не ориентируетесь на детали, просто прыгните вниз, чтобы получить прямой ответ на ваш запрос. Продолжите отсюда, чтобы узнать больше об итерациях и итераторах.
Немного терминологии: в первом приближении итерация — это пошаговое выполнение сборки данных по одному элементу за раз; итерация — это набор данных, по которым можно выполнять итерацию; а итератор — это объект, который объединяет («пакеты») итерацию с методом __next __ () , что позволяет вам выполнять итерацию, вызывая next () .
- Список — это итерируемый [1,2,3,4]
- Оператор for — in превращает его в итератор и автоматически предоставляет «следующий». Очень удобно!
- Но вы можете сделать это самостоятельно, используя iter () :
x = [1,2,3,4]
y = iter (x)
печать (у)
печать (далее (у))
печать (далее (у))
печать (далее (у))
печать (далее (у))
печать (далее (у))
* Выход:
<объект list_iterator в 0x02FF67D0>
1
2
3
4
Отслеживание (последний вызов последний):
Файл "C: \ path \ to \ test.py ", строка 9, в
печать (далее (у))
StopIteration
… и о да, оператор for-in знает, что делать, когда поднимается StopIteration !
Все вышесказанное просто указывает на то, что нет итератора в цикле while . Вы можете запрограммировать цикл и для итерации. Вы даже можете использовать while для создания итератора; Фактически, именно так работает на петель. … а правила !
Но по сути, цикл и просто каждый раз проверяет наличие определенного условия.Он повторяется только в том случае, если вы этого хотите. Переменная, которую вы увеличиваете, может называться итерационной переменной , но это , а не итератор.
Итак, каков ответ на ваш вопрос?
Первый пример: почему бы не начать с i = 0, а затем пойти с
сумма + = lst [idx]
idx + = 1
каждый раз.
Что касается второго, помните, что , тогда как не обязательно повторяется, он просто проверяет условие.Помните, что делает pop () : он удаляет элемент из конца списка и возвращает этот элемент. Итак, если вы выбираете одного из студентов из списка и добавляете его в другой список, все, что вам нужно сделать, чтобы сделать это правильно, — это решить, сколько студентов вы хотите переместить из одного списка в другой, и поместите это число в список. while условие (в данном случае условие состоит в том, что длина нового списка меньше 6).
Операторы Break, Continue и Pass в циклах For и While
Введение
Использование для циклов и в то время как циклы в Python позволяют автоматизировать и эффективно повторять задачи.
Но иногда внешний фактор может повлиять на работу вашей программы. Когда это происходит, вы можете захотеть, чтобы ваша программа полностью вышла из цикла, пропустила часть цикла перед продолжением или проигнорировала этот внешний фактор. Вы можете выполнить эти действия с операторами break
, continue
и pass
.
Предварительные требования
У вас должен быть установлен Python 3 и настроена среда программирования на вашем компьютере или сервере. Если у вас не настроена среда программирования, вы можете обратиться к руководствам по установке и настройке для локальной среды программирования или среды программирования на вашем сервере, подходящей для вашей операционной системы (Ubuntu, CentOS, Debian и т. Д.))
Заявление о перерыве
В Python оператор break
дает вам возможность выйти из цикла при срабатывании внешнего условия. Вы помещаете оператор break
в блок кода под оператором цикла, обычно после условного оператора if
.
Информация: Чтобы следовать примеру кода в этом руководстве, откройте интерактивную оболочку Python в своей локальной системе, выполнив команду python3
.Затем вы можете копировать, вставлять или редактировать примеры, добавляя их после приглашения >>>
.
Давайте посмотрим на пример, который использует оператор break
в цикле for
:
число = 0
для числа в диапазоне (10):
если число == 5:
перерыв # перерыв здесь
print ('Число равно' + str (число))
print ('Вне цикла')
В этой небольшой программе переменная номер
инициализируется нулем. Затем оператор для
создает цикл до тех пор, пока переменная номер
меньше 10.
Внутри цикла for
есть оператор if
, который представляет условие, что , если , переменная номер
эквивалентна целому числу 5, , тогда цикл будет прерван.
Внутри цикла также находится оператор print ()
, который будет выполняться с каждой итерацией цикла для
до тех пор, пока цикл не прервется, поскольку он находится после оператора break
.
Чтобы знать, когда мы вышли из цикла, мы включили последний оператор print ()
вне цикла for
.
Когда мы запустим этот код, наш результат будет следующим:
Выход
Число 0
Число равно 1
Число равно 2
Число равно 3
Число 4
Вне цикла
Это показывает, что после того, как целое число число
оценивается как эквивалентное 5, цикл прерывается, поскольку программе предлагается сделать это с помощью оператора break
.
Оператор break
вызывает выход программы из цикла.
Продолжить Заявление
Оператор continue
дает вам возможность пропустить часть цикла, в которой запускается внешнее условие, но продолжить, чтобы завершить оставшуюся часть цикла.То есть текущая итерация цикла будет прервана, но программа вернется в начало цикла.
Оператор continue
будет находиться в блоке кода под оператором цикла, обычно после условного оператора if
.
Используя тот же для программы цикла
, что и в разделе «Оператор Break» выше, мы будем использовать оператор continue
, а не оператор break
:
число = 0
для числа в диапазоне (10):
если число == 5:
continue # продолжить здесь
print ('Число равно' + str (число))
print ('Вне цикла')
Разница в использовании оператора continue
вместо оператора break
заключается в том, что наш код продолжит работу, несмотря на сбой, когда переменная номер
будет оценена как эквивалентная 5.Давайте рассмотрим наш результат:
Выход
Число 0
Число равно 1
Число равно 2
Число равно 3
Число 4
Число 6
Число 7
Число 8
Число 9
Вне цикла
Здесь Число равно 5
никогда не встречается в выводе, но цикл продолжается после этой точки, чтобы напечатать строки для чисел 6–10 перед выходом из цикла.
Вы можете использовать оператор continue
, чтобы избежать глубоко вложенного условного кода или оптимизировать цикл, исключив часто встречающиеся случаи, которые вы хотели бы отклонить.
Оператор continue
заставляет программу пропускать определенные факторы, возникающие в цикле, но затем продолжать выполнение оставшейся части цикла.
Когда запускается внешнее условие, оператор pass
позволяет обрабатывать условие без какого-либо воздействия на цикл; весь код будет продолжать считываться, если только не произойдет разрыв
или другой оператор.
Как и другие операторы, оператор pass
будет находиться в блоке кода под оператором цикла, обычно после условного оператора if
.
Используя тот же блок кода, что и выше, давайте заменим оператор break
или continue
на оператор pass
:
число = 0
для числа в диапазоне (10):
если число == 5:
пройти # пройти здесь
print ('Число равно' + str (число))
print ('Вне цикла')
Оператор pass
, появляющийся после условного оператора if
, сообщает программе продолжить выполнение цикла и игнорировать тот факт, что переменная number
оценивается как эквивалентная 5 во время одной из итераций.
Запустим программу и рассмотрим результат:
Выход
Число 0
Число равно 1
Число равно 2
Число равно 3
Число 4
Число 5
Число 6
Число 7
Число 8
Число 9
Вне цикла
Используя оператор pass
в этой программе, мы замечаем, что программа работает точно так же, как если бы в программе не было условного оператора. Оператор pass
предписывает программе игнорировать это условие и продолжать выполнение программы в обычном режиме.
Оператор pass
может создавать минимальные классы или действовать в качестве заполнителя при работе над новым кодом и мышлении на алгоритмическом уровне, прежде чем вырабатывать детали.
Заключение
Операторы break
, continue
и pass
в Python позволят вам использовать для циклов
и , а циклы
более эффективно в вашем коде.
Чтобы больше работать с операторами break,
и pass,
, вы можете следовать нашему руководству по проекту «Как создать Twitterbot с Python 3 и библиотекой Tweepy.”
python: выход из двух циклов
python: выход из двух циклов — qaruПрисоединяйтесь к Stack Overflow , чтобы учиться, делиться знаниями и строить свою карьеру.
Спросил
Просмотрено 43k раз
для строки в b:
для препарата в drug_input:
для бренда в brand_names [наркотик]:
из третьего цикла, как мне выйти из текущего цикла и перейти к следующему значению для строки в b:
?
Создан 28 июл.
Алекс Гордон50.5k273273 золотых знака618618 серебряных знаков987987 бронзовых знаков
8Здесь используется логическое значение, чтобы узнать, закончили ли вы еще:
done = Ложь
для x в xs:
для y в ys:
если плохо:
done = True
перерыв
если сделано:
перерыв
Этот будет продолжить
, если перерыв не использовался. else
будет пропущен, если был разрыв, поэтому он увидит следующий разрыв
. Преимущество этого подхода в том, что он не использует переменную, но некоторым может быть труднее читать.
для x в xs:
для y в ys:
если плохо:
перерыв
еще:
Продолжить
перерыв
Создан 28 июля ’10 в 23: 392010-07-28 23:39
Дональд МайнерДональд Майнер36k 77 золотых знаков8888 серебряных знаков114114 бронзовых знака
4Если у вас есть три уровня зацикливания в одном методе, вам, вероятно, нужно переосмыслить свой дизайн.
- Разделите свой метод на более мелкие и простые.
- Используйте понимание списка и такие методы, как
all
иany
, чтобы избежать написания явных циклов.
Выполнение любого из этих действий должно означать, что у вас больше нет этой проблемы.
Создан 28 июля ’10 в 23: 382010-07-28 23:38
Марк БайерсМарк Байерс732k166166 золотых знаков15091509 серебряных знаков14191419 бронзовых знаков
6 для строки в b:
more_drugs = Верно
для препарата в drug_input:
для бренда в brand_names [наркотик]:
если что-то:
more_drugs = Ложь
перерыв
если не more_drugs:
перерыв
Python не имеет структуры управления для одновременного выхода из двух циклов, поэтому вам нужно сделать что-то вроде этого вручную.
Создан 28 июля ’10 в 23: 372010-07-28 23:37
Нед БатчелдерNed Batchelder2,155 11 золотой знак
1Обработка исключений превосходит установку переменных повсюду IMO
для строки в b:
для препарата в drug_input:
пытаться:
для бренда в brand_names [наркотик]:
если some_condition:
поднять StopIteration
кроме StopIteration:
перерыв
Создан 28 июля ’10 в 21: 002010-07-28 21:00
Brianzbrianz6,89822 золотых знака3333 серебряных знака4343 бронзовых знака
6Я бы подумал о том, чтобы поместить два внутренних цикла в функцию и использовать , чтобы вернуть оттуда.Возможно, переосмысление того, что вы делаете и как, дает лучшую альтернативу этому.
Не могли бы вы указать свой текущий псевдокод, ввод и вывод, чтобы мы могли в первую очередь попытаться устранить необходимость в перерыве? Нам нужно увидеть, где используются переменные цикла или, что еще лучше, какова цель обработки.
Создан 28 июля ’10 в 23: 522010-07-28 23:52
Последний PEP, который я вижу, запрашивает эту функцию — 3136 (и был отклонен): http: // mail.python.org/pipermail/python-3000/2007-July/008663.html
Самая близкая и чистая вещь, которую я мог видеть к тому, что вы хотите сделать, — это сделать следующее (и, поскольку даже имена типов ограничены, вы можете объявить LocalBreak внутри необходимой функции):
класс LocalBreak (исключение): пройти
пытаться:
для я в ...:
для ч в ...:
для j в ...:
если should_break (j):
поднять LocalBreak ()
кроме LocalBreak:
проходить
Создан 29 июля ’10 в 3: 212010-07-29 03:21
Натан ЭрнстНатан Эрнст4,3202121 серебряный знак3737 бронзовых знаков
для а в аа:
для b в bb:
для c в cc:
если c == a [b]:
перерыв
еще:
Продолжить
перерыв
Python поддерживает для...else
заявлений. else блок
оценивается, если не срабатывает внутренний разрыв
.
Создан 11 сен.
1Не проверено:
inner_termination = Ложь
для строки в b:
для препарата в drug_input:
для бренда в brand_names [наркотик]:
если break_condition:
inner_termination = Верно
перерыв
если inner_termination:
inner_termination = Ложь
перерыв
Создан 28 июля ’10 в 23: 372010-07-28 23:37
Калеб Хаттинг8,45822 золотых знака2727 серебряных знаков4242 бронзовых знака
для строки в b:
ok = Верно
для препарата в drug_input:
если не нормально:
перерыв;
для бренда в brand_names [наркотик]:
если не нормально:
перерыв
если что:
ok = Ложь
Создан 28 июля ’10 в 23: 392010-07-28 23:39
Теодор Припое1,32811 золотых знаков1111 серебряных знаков2626 бронзовых знаков
попробуйте
/, кроме
/, поднять
, как предложено в комментарии @gddc, является одной из возможностей.Другой — «обернуть» два вложенных цикла в один:
для строки в b:
для бренда в (b вместо d в вводе наркотиков для b в названиях брендов [d]):
...
, разрыв
из для бренда
вложенного цикла вернется на уровень внешнего цикла для строки
. Конечно, это работает только в том случае, если код, который здесь заменен на ...
, не должен видеть имя препарата
, привязанное к лекарству, которое в настоящее время исследуется. Это так для вас?
Создан 28 июля ’10 в 23: 402010-07-28 23:40
Алекс Мартелли775k159159 золотых знаков11721172 серебряных знака13521352 бронзовых знака
1 Если у вас слишком много встроенных циклов, возможно, пришло время для рефакторинга.В этом случае я считаю, что лучший рефакторинг — это переместить ваши циклы в функцию и использовать оператор return
. Это приведет к принудительному выходу из любого количества циклов. Например:
def, пример (self, drug_input):
ok = Ложь
для x в Drug_input ["имена"]:
для y в диапазоне (drug_input ["number_of_drugs"]):
для z в Drug_input ["list_of_drugs"]:
# делать что-нибудь
если все в порядке:
вернуть Drug_costs
Теперь, возможно, будет сложно переформулировать вашу логику, но я уверен, что рефакторинг поможет и в других отношениях.
Создан 28 фев.
john_science5,81766 золотых знаков4141 серебряный знак5555 бронзовых знаков
Не тот ответ, который вы ищете? Посмотрите другие вопросы с метками python или задайте свой вопрос.
lang-py
Stack Overflow лучше всего работает с включенным JavaScriptВаша конфиденциальность
Нажимая «Принять все файлы cookie», вы соглашаетесь с тем, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Принимать все файлы cookie Настроить параметры
Как использовать Python break для преждевременного завершения цикла
Резюме : в этом руководстве вы узнаете об операторе Python break
и о том, как использовать его для преждевременного выхода из цикла.
Введение в оператор break в Python
Иногда требуется преждевременно завершить цикл for
или цикл while
независимо от результатов условных тестов. В этих случаях вы можете использовать оператор break
:
Язык кода: Python (python)
break
Как правило, вы используете оператор break
с оператором if
для завершения цикла когда условие — True
.
Использование Python break с циклом for
Ниже показано, как использовать оператор break
внутри цикла for
:
Язык кода: Python (python)
для индекса в диапазоне (n): если условие: break
В этом синтаксисе, если условие
оценивается как True
, оператор break
немедленно завершает цикл. Остальные итерации выполняться не будут.
В этом примере показано, как использовать оператор break
внутри цикла for
:
Язык кода: Python (python)
для индекса в диапазоне (0, 10): печать (индекс) если index == 3: break
Вывод:
Язык кода: Python (python)
0 1 2 3
Как это работает.
- Цикл
для
выполняет итерацию по 10 числам от 0 до 9 и отображает каждое из них на экране. - Однако, когда счетчик цикла равен 3, оператор
break
немедленно завершает цикл. Поэтому программа выводит на экран всего 4 числа, от 0 до 3.
Когда вы используете оператор break
во вложенном цикле, он завершает самый внутренний цикл. Например:
Язык кода: Python (python)
для x в диапазоне (5): для y в диапазоне (5): если y> 1: перерыв print (f "({x}, {y})")
Вывод:
Язык кода: Python (python)
(0,0) (0,1) (1,0) (1,1) (2,0) (2,1) (3,0) (3,1) (4,0) (4,1)
В этом примере используются два цикла для
для отображения на экране координат от (0,0)
до (5,5)
.
Оператор break
во вложенном цикле завершает самый внутренний цикл, когда y
больше единицы.
Следовательно, вы видите только координаты, значения y которых равны нулю и единице.
Использование оператора break в Python с циклом while
Ниже показано, как использовать оператор break
внутри цикла while
:
Язык кода: Python (python)
while condition: если условие: break
В следующем примере оператор break
используется внутри цикла while
.
Вам будет предложено ввести ваш любимый цвет. Программа остановится, как только вы введете quit
:
Язык кода: Python (python)
print ('- Справка: введите quit для выхода -') в то время как True: color = input ('Введите свой любимый цвет:') если color.lower () == 'выйти': break
Вывод:
Язык кода: Python (python)
- Справка: введите quit для выхода - Введите свой любимый цвет: красный Введите свой любимый цвет: зеленый Введите свой любимый цвет: синий Введите свой любимый цвет: выйти
Как это работает.
-
, а True
создает неопределенный цикл. - После ввода
выйти из
условиеcolor.lower () == 'quit'
оценивает True, что выполняет оператор break для завершения цикла. -
color.lower ()
возвращаетcolor
в нижнем регистре, так что вы можете ввестиQuit
,QUIT
илиquit
для выхода из программы.
Сводка
- Используйте оператор Python
break
для преждевременного завершения цикла for или while.
Вы нашли это руководство полезным?
Выйти из программы Python тремя простыми способами!
Привет всем. В этой статье мы рассмотрим некоторые функции, которые можно считать удобными для выполнения этой задачи — Выход из программы Python .
Метод 1: Использование функции quit ()
Встроенная функция quit ()
, предлагаемая функциями Python, может использоваться для выхода из программы Python.
Синтаксис:
Как только система встречает функцию quit (), она полностью прекращает выполнение программы.
Пример:
для x в диапазоне (1,10): печать (x * 10) покидать()
Как видно выше, после первой итерации цикла for интерпретатор встречает функцию quit () и завершает программу.
Выход:
Метод 2: Python функция sys.exit ()
Системный модуль Python
содержит встроенную функцию для выхода из программы и выхода из процесса выполнения — sys.exit ()
функция.
Функцию sys.exit () можно использовать в любой момент, не беспокоясь о повреждении кода.
Синтаксис:
Давайте посмотрим на приведенный ниже пример, чтобы понять функцию sys.exit ()
.
Пример:
import sys х = 50 если x! = 100: sys.exit («Значения не совпадают») еще: print ("Проверка значений завершена !!")
Выход:
Метод 3: Использование функции exit ()
Помимо вышеупомянутых методов, мы можем использовать встроенную функцию exit ()
для выхода и выхода из цикла выполнения программы. программа на Python.
Синтаксис:
Пример:
для x в диапазоне (1,10): печать (x * 10) выход()
Функцию exit () можно рассматривать как альтернативу функции quit (), которая позволяет нам завершить выполнение программы.
Вывод:
Заключение
На этом мы подошли к концу данной темы. Функции exit (),
и quit ()
нельзя использовать в операционных и производственных кодах.Потому что эти две функции могут быть реализованы только в том случае, если модуль сайта импортирован.
Таким образом, из вышеупомянутых методов наиболее предпочтительным является метод sys.exit ()
.
Не стесняйтесь комментировать ниже, если у вас возникнут какие-либо вопросы.
До тех пор, удачного обучения !!
Ссылки
Python while Loop | Linuxize
Циклы — одна из фундаментальных концепций языков программирования. Циклы удобны, когда вы хотите повторить определенный блок кода несколько раз, пока не будет выполнено заданное условие.
В Python есть две основные конструкции цикла, для
.
и , а
петель.
В этом руководстве рассматриваются основы циклов и
в Python. Мы также покажем вам, как использовать предложение else
и предложение break
и continue
.
Python
while
Цикл # Цикл while
выполняет свои операторы неизвестное количество раз, пока данное условие оценивается как true
.
Цикл Python while
принимает следующую форму:
while EXPRESSION:
ЗАЯВЛЕНИЯ)
Оператор while
начинается с ключевого слова while
, за которым следует условное выражение.
Выражение EXPRESSION
оценивается перед выполнением операторов. Если условие оценивается как истинно
, выполняется ЗАЯВЛЕНИЕ . В противном случае, если условие оценивается как false
, цикл завершается, и управление программой передается следующему оператору.
Блок STATEMENT (S)
начинается с отступа и заканчивается первой строкой без отступа. Большинство людей предпочитают использовать отступы с четырьмя или двумя пробелами. Официальное руководство по стилю кода Python
рекомендует использовать 4 пробела для каждого уровня отступа и избегать смешивания использования табуляции и пробелов для отступа.
Давайте посмотрим на следующий пример кода, который увеличивает и печатает текущее значение переменной i
, если оно меньше пяти:
i = 0
пока я <5:
я + = 1
print ('число:', я)
Цикл вторника повторяется, пока i
меньше или равно пяти.Он выдаст следующий результат:
номер: 1
номер 2
номер: 3
номер: 4
номер: 5
Python поддерживает стандартные операции сравнения:
-
a == b
- Истинно, еслиa
иb
равны. -
a! = B
- Верно, еслиa
иb
не равны. -
a> b
- Верно, еслиa
большеb
. -
a> = b
- Истинно, еслиa
больше или равноb
. -
a - Верно, если
a
меньшеb
. -
a <= b
- Верно, еслиa
равно или меньшеb
.
Чтобы отрицать условное выражение, используйте логический оператор not
:
i = 0
пока не я> = 5:
я + = 1
print ('число:', я)
break
и continue
Операторы # Операторы break
и continue
позволяют управлять выполнением цикла и
.
Оператор break
завершает текущий цикл и передает управление программой оператору, который следует за завершенным циклом. Наиболее распространенная ситуация - использовать break
для завершения цикла при выполнении определенного условия.
В следующем примере выполнение цикла прерывается, когда текущий повторяемый элемент равен 2
.
я = 0
пока я <5:
я + = 1
если я == 2:
перерыв
print ('число:', я)
Номер: 1
Оператор continue
завершает текущую итерацию цикла и передает управление программой следующей итерации цикла.
В следующем примере, когда текущий повторяемый элемент равен 2
, оператор continue
заставит выполнение вернуться к началу цикла и продолжить следующую итерацию.
я = 0
пока я <5:
я + = 1
если я == 2:
Продолжить
print ('число:', я)
номер: 1
номер: 3
номер: 4
номер: 5
else
Clause # В отличие от других языков, в Python цикл while
имеет необязательное предложение else
:
while EXPRESSION:
ЗАЯВЛЕНИЯ)
еще:
ЗАЯВЛЕНИЯ)
Операторы внутри предложения else
выполняются только тогда, когда EXPRESSION
оценивается как false
.Если возникает исключение или цикл завершается оператором break
, оно не будет выполнено.
Вот пример:
i = 0
пока я <5:
я + = 1
print ('число:', я)
еще:
print ('Цикл завершен.')
номер: 1
номер 2
номер: 3
номер: 4
номер: 5
Цикл завершен.
Теперь посмотрим, что произойдет, если вывести
из цикла:
i = 0
пока я <5:
я + = 1
если я == 2:
перерыв
print ('число:', я)
еще:
print ('Цикл завершен.')
Оператор внутри предложения else
не выполняется, поскольку выражение не оценивалось как false
:
Число: 1
Предложение else
с , а цикл
не часто используется. Одна из распространенных ситуаций - это когда вы ожидаете выхода из цикла, и если цикл продолжает выполняться до тех пор, пока условие не оценивается как false
, вы можете выполнить некоторый оператор или функцию.
Бесконечный
while
Цикл #Бесконечный цикл - это цикл, который повторяется бесконечно и никогда не завершается, пока программа не завершится.Если условие всегда истинно, вы получаете бесконечный цикл.
Бесконечные циклы обычно используются для того, чтобы программа ожидала возникновения какого-либо внешнего события. Обычно в Python бесконечный цикл создается с , в то время как True:
Вместо True
вы также можете использовать любое другое выражение, которое всегда возвращает true
.
Вот пример бесконечного цикла while
, который будет продолжать предлагать вам ввести «Да»:
while True:
i = input ('Пожалуйста, введите \' Да \ ':')
Если я.strip () == 'Да':
перерыв
Цикл и
выше будет выполняться, пока вы не введете «Да»:
Пожалуйста, введите «Да»: 3
Пожалуйста, введите "Да": l
Пожалуйста, введите "Да": lin
Пожалуйста, введите "Да": Нет
Пожалуйста, введите "Да": Да
Другой способ завершить бесконечный цикл - нажать CTRL + C
.
При написании бесконечных циклов убедитесь, что вы используете оператор break
для выхода из цикла в какой-то момент.
Заключение #
Цикл while
многократно выполняет свои операторы, пока данное условие оценивается как true
.
Если у вас есть вопросы или отзывы, не стесняйтесь оставлять комментарии.
Как использовать оператор break и continue в цикле в Python
Break и continue Операторы используются внутри цикла любого языка программирования для различных целей. Эти два оператора считаются операторами jump , потому что оба оператора перемещают элемент управления из одной части в другую часть сценария. Оператор break используется в любом цикле для завершения цикла на основе любого конкретного условия до появления условия завершения.Оператор continue используется в любом цикле для пропуска одного или нескольких операторов цикла на основе какого-либо конкретного условия, но не используется для завершения цикла. В этом руководстве показано, как эти операторы используются внутри цикла Python.Использование разрыва
Заявление :Оператор break может использоваться для различных целей внутри любого цикла в Python. Некоторые варианты использования операторов break показаны в следующей части этого руководства на различных примерах.
Пример-1: Завершить бесконечный цикл на основе случайного числа
В следующем примере целое случайное число будет сгенерировано в бесконечном цикле и . Когда вновь сгенерированное случайное значение больше 75 или равно 99 , тогда будет выполнен оператор break и завершится цикл, в противном случае цикл будет продолжен для других значений.
#! / usr / bin / env python3# import randint module
from random import randint
# Определить бесконечный цикл while
while (True):
# Сгенерировать случайное число от 10 до 99
number = randint (10, 99)
# Распечатать сгенерированное в данный момент число
print ("Новое сгенерированное число% s"% number)
# Завершить цикл, если число больше 75,
if (number> 75):
print (" Удачи в следующий раз ")
break
# Завершить цикл, если число равно 99
elif (number == 99):
print (" Бинго !!!, Вы победитель ")
break
# Продолжить цикл
иначе:
print («Вы можете попробовать в другой раз»)
Выход:
После запуска сценария появится следующий вывод.
Пример-2: Остановить итерацию списка на основе определенного значения
Следующий сценарий будет считывать значения из переменной списка с именем languages , используя цикл for . Когда условие if внутри цикла становится истинным, цикл будет завершен перед чтением всех элементов для оператора break .
#! / usr / bin / env python3# Объявить список языков
languages = ['Bash', 'PHP', 'Java', 'Python', 'C #', 'C ++']
# Распечатать список, пока не будет выполнен оператор break
print ('Список разных языков:')
# Итерировать список
для lname на языках:
# Распечатать текущий элемент списка
print (lname)
# Проверить условие выхода из цикла
if (lname == 'Python'):
break
# Распечатать сообщение о завершении цикла
print ('Прервано из цикла')
Выход:
После запуска сценария появится следующий вывод.
Пример-3: Прочтите конкретные три элемента из словаря
В следующем примере показано, как вы можете прочитать только три определенных элемента из словаря, используя для оператора break и для цикла . В скрипте определен словарь из шести пунктов, где ключ содержит имя студента, а значение содержит заслуги этого студента. Цикл для используется для чтения значений словаря и сохранения имен тех студентов в списке, чьи заслуги находятся в пределах от 1 до 3.Цикл будет завершен после добавления трех элементов в список с помощью оператора break .
#! / usr / bin / env python3# Определите список для хранения имен первых трех человек
topList = ['', '', '']
# Установить значение счетчика для завершения цикла
counter = 0
# Определить словарь из шести элементов
meritList = {'Mohammed': 1, 'Mila Rahman': 5, 'Sakib Al Hasan': 3, 'Brian Lara': 6,
'Sachin Tendulker': 2, 'Alif Hossain': 4}
# Итерируйте значения словаря, чтобы получить имена первых трех заслуг
for student_name в meritList:
# Прочитать позицию заслуг
merit_pos = meritList [student_name]
# Сохранить значение индекса в списке, если позиция находится в пределах от 1 до 3, и счетчик на 1
if (merit_pos <4):
topList [merit_pos-1] = student_name
counter = counter + 1
# Завершить цикл, если значение счетчика 3,
if (counter == 3):
break
# Прочитать и распечатать значения списка на основе позиции
для n в диапазоне (0,3):
print ("% s находится в позиции% s"% (topList [n], n + 1))
Выход:
После запуска сценария появится следующий вывод.
Использование оператора continue:
Оператор continue не завершает цикл, как оператор break . Он передает управление программой в начало цикла без выполнения каких-либо конкретных операторов. Некоторые варианты использования оператора continue показаны в следующей части этого руководства на различных примерах.
Пример-4: Распечатать те значения из списка, которые делятся на 3 и 5
Следующий скрипт прочитает список чисел с помощью цикла for и распечатает те числа из списка, которые делятся на 3 и 5, используя , если и продолжают операторы .
#! / usr / bin / env python3# Объявить список чисел
numbers = [5, 10, 11, 15, 25,30,46, 45, 50]
# Распечатать сообщение
print ('Числа, делящиеся на 3 и 5:')
# Перебрать список
для n чисел:
# Проверить условие для выполнения оператора continue
if (n% 3! = 0 или n% 5! = 0):
continue
# Вывести числа, которые делятся на 3 и 5
else:
print (n )
Выход:
После запуска сценария появится следующий вывод.
Пример-5: Распечатать определенные значения из словаря
Словарь из пяти человек определен в сценарии, где ключ содержит имя человека, а значение каждого ключа содержит « присутствует» или « отсутствует» в качестве значения. Следующий скрипт напечатает те имена людей из словаря, которые содержат значение ‘Present’ .
#! / usr / bin / env python3# Определяем словарь из 5 человек
person = {'Mr.Micheal ':' Настоящее ',' Мистер. Робин: «Отсутствует», «Миссис. Ella »:« Отсутствует »,
« Мисс Лара »:« Настоящее »,« Мистер. Hossain ':' Present '}
# Распечатать сообщение
print (' На собрании присутствуют следующие люди: ')
# Перебрать словарь
для имени в людях:
# Проверить условие для выполнения оператора продолжения
if ( people [name] == 'Absent'):
продолжить
# Вывести имя человека
else:
print (name)
Выход:
После запуска сценария появится следующий вывод.