Интерактивный учебник языка Python
1. Цикл while
Цикл while
(“пока”) позволяет выполнить
одну и ту же последовательность действий, пока проверяемое условие истинно.
Условие записывается до тела цикла и проверяется до выполнения тела цикла.
Как правило, цикл while
используется, когда невозможно
определить точное значение количества проходов исполнения цикла.
Синтаксис цикла while
в простейшем случае выглядит так:
while условие: блок инструкций
При выполнении цикла while
сначала проверяется условие.
Если оно ложно, то выполнение цикла прекращается и управление
передается на следующую инструкцию после тела цикла while
.
Если условие истинно, то выполняется инструкция, после чего условие
проверяется снова и снова выполняется инструкция.
Так продолжается до тех пор, пока условие будет истинно.
Как только условие станет ложно, работа цикла завершится и
управление передастся следующей инструкции после цикла.
Например, следующий фрагмент программы напечатает на экран
квадраты всех целых чисел от 1 до 10. Видно, что цикл while
может заменять цикл for ... in range(...)
:
i = 1 while i <= 10: print(i ** 2) i += 1
В этом примере переменная i
внутри цикла изменяется от 1 до 10.
Такая переменная, значение которой меняется с каждым новым проходом цикла,
называется счетчиком. Заметим, что после выполнения этого фрагмента
значение переменной i
будет равно 11
,
поскольку именно при i == 11
условие i <= 10
впервые
перестанет выполняться.
Вот еще один пример использования цикла while
для определения количества цифр натурального числа n
:
5678
n = int(input()) length = 0 while n > 0: n //= 10 # это эквивалентно n = n // 10 length += 1 print(length)
В этом цикле мы отбрасываем по одной цифре числа, начиная с конца,
что эквивалентно целочисленному делению на 10 ( n //= 10
),
при этом считаем в переменной length
, сколько раз это было сделано.
В языке Питон есть и другой способ решения этой задачи: length = len(str(i))
.
2. Инструкции управления циклом
После тела цикла можно написать слово else:
и после него блок операций, который будет
выполнен один раз после окончания цикла, когда проверяемое
условие станет неверно:
i = 1 while i <= 10: print(i) i += 1 else: print('Цикл окончен, i =', i)
Казалось бы, никакого смысла в этом нет, ведь эту же инструкцию можно
просто написать после окончания цикла. Смысл появляется только
вместе с инструкцией break
. Если во время выполнения Питон встречает
инструкцию break
внутри цикла, то он сразу же прекращает выполнение этого цикла и выходит из него.
При этом ветка
исполняться не будет. Разумеется, инструкцию break
осмыленно
вызывать только внутри инструкции if
, то есть она должна выполняться
только при выполнении какого-то особенного условия.
Приведем пример программы, которая считывает числа до тех пор, пока не встретит отрицательное число. При появлении отрицательного числа программа завершается. В первом варианте последовательность чисел завершается числом 0 (при считывании которого надо остановиться).
3 6 -1 4 0
a = int(input()) while a != 0: if a < 0: print('Встретилось отрицательное число', a) break a = int(input()) else: print('Ни одного отрицательного числа не встретилось')Во втором варианте программы сначала на вход подается количество элементов последовательности, а затем и сами элементы. В таком случае удобно воспользоваться циклом
for
. Цикл for
также может иметь ветку else
и содержать инструкции break
внутри себя.3 6 2 4
n = int(input()) for i in range(n): a = int(input()) if a < 0: print('Встретилось отрицательное число', a) break else: print('Ни одного отрицательного числа не встретилось')
Другая инструкция управления циклом — continue
(продолжение цикла). Если эта инструкция
встречается где-то посередине цикла, то пропускаются все оставшиеся
инструкции до конца цикла, и исполнение цикла продолжается
со следующей итерации.
break
и continue
содержатся внутри нескольких вложенных
циклов, то они влияют лишь на исполнение самого внутреннего цикла. Вот не самый интеллектуальный пример,
который это демонстрирует:
for i in range(3): for j in range(5): if j > i: break print(i, j)Увлечение инструкциями
break
и continue
не поощряется, если можно обойтись без их использования. Вот типичный пример плохого использования инструкции break
(данный код считает количество знаков в числе).567
n = int(input()) length = 0 while True: length += 1 n //= 10 if n == 0: break print('Длина числа равна', length)Гораздо лучше переписать этот цикл так:
567
n = int(input()) length = 0 while n != 0: length += 1 n //= 10 print('Длина числа равна', length)Впрочем, на Питоне можно предложить и более изящное решение:
567
n = int(input()) print('Длина числа равна', len(str(n)))
3. Множественное присваивание В Питоне можно за одну инструкцию присваивания изменять значение сразу нескольких переменных. Делается это так: Этот код можно записать и так: Отличие двух способов состоит в том, что множественное присваивание в первом способе меняет значение двух переменных одновременно.
Если слева от знака «=» в множественном присваивании должны стоять через запятую имена переменных, то справа могут стоять произвольные выражения, разделённые запятыми. Главное, чтобы слева и справа от знака присваивания было одинаковое число элементов.
Множественное присваивание удобно использовать, когда нужно обменять значения двух переменных. В обычных языках программирования без использования специальных функций это делается так:
a = 1 b = 2 tmp = a a = b b = tmp print(a, b) # 2 1В Питоне то же действие записывается в одну строчку:
a = 1 b = 2 a, b = b, a print(a, b) # 2 1
Ссылки на задачи доступны в меню слева. Эталонные решения теперь доступны на странице самой задачи.
Интерактивный учебник языка Python
Занятие 6. Цикл while
Задача «Минимальный делитель»
Условие Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.
Во всех задачах считывайте входные данные через input()
и выводите ответ через print()
.
Тесты
Входные данные | Правильный ответ | Что вывела программа | Результат | |
---|---|---|---|---|
Запустить тест 1 | 15 | 3 | ||
Запустить тест 2 | 2 | 2 | ||
Запустить тест 3 | 3 | 3 | ||
Запустить тест 4 | 4 | 2 | ||
Запустить тест 5 | 5 | 5 | ||
Запустить тест 6 | 6 | 2 | ||
Запустить тест 7 | 7 | 7 | ||
Запустить тест 8 | 8 | 2 | ||
Запустить тест 9 | 35 | 5 | ||
Запустить тест 10 | 55 | 5 | ||
Запустить тест 11 | 179 | 179 |
Интерактивный учебник языка Python
Занятие 6. Цикл while
Задача «Степень двойки»
Условие
По данному натуральному числу N найдите наибольшую целую степень двойки, не превосходящую N. Выведите показатель степени и саму степень.
Операцией возведения в степень пользоваться нельзя!
Во всех задачах считывайте входные данные через input()
и выводите ответ через print()
.
Тесты
Входные данные | Правильный ответ | Что вывела программа | Результат | |
---|---|---|---|---|
Запустить тест 1 | 50 | 5 32 | ||
Запустить тест 2 | 10 | 3 8 | ||
Запустить тест 3 | 8 | 3 8 | ||
Запустить тест 4 | 7 | 2 4 | ||
Запустить тест 5 | 1 | 0 1 | ||
Запустить тест 6 | 2 | 1 2 | ||
Запустить тест 7 | 3 | 1 2 | ||
Запустить тест 8 | 4 | 2 4 | ||
Запустить тест 9 | 5 | 2 4 | ||
Запустить тест 10 | 100 | 6 64 | ||
Запустить тест 11 | 1025 | 10 1024 | ||
Запустить тест 12 | 15431543 | 23 8388608 |
Как работает цикл while в python, примеры ~ PythonRu
Из этого материала вы узнаете, что такое циклы 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)
- Continue — ключевое слово
continue
прерывает текущую итерацию и передает управление в начало цикла, после чего условие снова проверяется. Если оно истинно, исполняется следующая итерация.
a = 1
while a < 5:
a += 1
if a == 3:
continue
print(a)
Циклы в программировании. Цикл while. Курс «Python. Введение в программирование»
Циклы являются такой же важной частью структурного программирования, как условные операторы. С помощью циклов можно организовать повторение выполнения участков кода. Потребность в этом возникает довольно часто. Например, пользователь последовательно вводит числа, и каждое из них требуется добавлять к общей сумме. Или нужно вывести на экран квадраты ряда натуральных чисел и тому подобные задачи.
Цикл while
«While» переводится с английского как «пока». Но не в смысле «до свидания», а в смысле «пока имеем это, делаем то».
Можно сказать, while является универсальным циклом. Он присутствует во всех языках, поддерживающих структурное программирование, в том числе в Python. Его синтаксис обобщенно для всех языков можно выразить так:
while логическое_выражение { выражение 1; … выражение n; }
Это похоже на условный оператор if
. Однако в случае циклических операторов их тела могут выполняться далеко не один раз. В случае if
, если логическое выражение в заголовке возвращает истину, то тело выполняется единожды. После этого поток выполнения программы возвращается в основную ветку и выполняет следующие выражения, расположенные ниже всей конструкции условного оператора.
В случае while
, после того как его тело выполнено, поток возвращается к заголовку цикла и снова проверяет условие. Если логическое выражение возвращает истину, то тело снова выполняется. Потом снова возвращаемся к заголовку и так далее.
Цикл завершает свою работу только тогда, когда логическое выражение в заголовке возвращает ложь, то есть условие выполнения цикла больше не соблюдается. После этого поток выполнения перемещается к выражениям, расположенным ниже всего цикла. Говорят, «происходит выход из цикла».
Рассмотрите блок-схему цикла while
.
На ней ярко-голубыми прямоугольниками обозначена основная ветка программы, ромбом – заголовок цикла с логическим выражением, бирюзовым прямоугольником – тело цикла.
С циклом while возможны две исключительные ситуации:
Если при первом заходе в цикл логическое выражение возвращает
False
, то тело цикла не выполняется ни разу. Эту ситуацию можно считать нормальной, так как при определенных условиях логика программы может предполагать отсутствие необходимости в выполнении выражений тела цикла.Если логическое выражение в заголовке
while
никогда не возвращаетFalse
, а всегда остается равнымTrue
, то цикл никогда не завершится, если только в его теле нет оператора принудительного выхода из цикла (break
) или вызовов функций выхода из программы –quit()
,exit()
в случае Python. Если цикл повторяется и повторяется бесконечное количество раз, то в программе происходит зацикливание. В это время она зависает и самостоятельно завершиться не может.
Вспомним наш пример из урока про исключения. Пользователь должен ввести целое число. Поскольку функция input()
возвращает строку, то программный код должен преобразовать введенное к целочисленному типу с помощью функции int()
. Однако, если были введены символы, не являющиеся цифрами, то возникает исключение ValueError
, которое обрабатывается веткой except
. На этом программа завершается.
Другими словами, если бы программа предполагала дальнейшие действия с числом (например, проверку на четность), а она его не получила, то единственное, что программа могла сделать, это закончить свою работу досрочно.
Но ведь можно просить и просить пользователя корректно вести число, пока он его не введет. Вот как может выглядеть реализующий это код:
n = input("Введите целое число: ") while type(n) != int: try: n = int(n) except ValueError: print("Неправильно ввели!") n = input("Введите целое число: ") if n % 2 == 0: print("Четное") else: print("Нечетное")
Примечание 1. Не забываем, в языке программирования Python в конце заголовков сложных инструкций ставится двоеточие.
Примечание 2. В выражении type(n) != int
с помощью функции type()
проверяется тип переменной n. Если он не равен int
, то есть значение n не является целым числом, а является в данном случае строкой, то выражение возвращает истину. Если же тип n равен int
, то данное логическое выражение возвращает ложь.
Примечание 3. Оператор %
в языке Python используется для нахождения остатка от деления. Так, если число четное, то оно без остатка делится на 2, то есть остаток будет равен нулю. Если число нечетное, то остаток будет равен единице.
Проследим алгоритм выполнения этого кода. Пользователь вводит данные, они имеют строковый тип и присваиваются переменной n. В заголовке while
проверяется тип n. При первом входе в цикл тип n всегда строковый, то есть он не равен int
. Следовательно, логическое выражение возвращает истину, что позволяет зайти в тело цикла.
Здесь в ветке try
совершается попытка преобразования строки к целочисленному типу. Если она была удачной, то ветка except
пропускается, и поток выполнения снова возвращается к заголовку while
.
Теперь n связана с целым числом, следовательно, ее тип int
, который не может быть не равен int
. Он ему равен. Таким образом логическое выражение type(n) != int
возвращает False
, и весь цикл завершает свою работу. Далее поток выполнения переходит к оператору if-else, находящемуся в основной ветке программы. Здесь могло бы находиться что угодно, не обязательно условный оператор.
Вернемся назад. Если в теле try
попытка преобразования к числу была неудачной, и было выброшено исключение ValueError
, то поток выполнения программы отправляется в ветку except
и выполняет находящиеся здесь выражения, последнее из которых просит пользователя снова ввести данные. Переменная n теперь имеет новое значение.
После завершения except
снова проверяется логическое выражение в заголовке цикла. Оно даст True
, так как значение n по-прежнему строка.
Выход из цикла возможен только тогда, когда значение n будет успешно конвертировано в число.
Рассмотрим следующий пример:
total = 100 i = 0 while i < 5: n = int(input()) total = total - n i = i + 1 print("Осталось", total)
Сколько раз «прокрутится» цикл в этой программе, то есть сколько итераций он сделает? Ответ: 5.
Сначала переменная i равна 0. В заголовке цикла проверяется условие
i < 5
, и оно истинно. Тело цикла выполняется. В нем меняется значение i, путем добавления к нему единицы.Теперь переменная i равна 1. Это меньше пяти, и тело цикла выполняется второй раз. В нем i меняется, ее новое значение 2.
Два меньше пяти. Тело цикла выполняется третий раз. Значение i становится равным трем.
Три меньше пяти. На этой итерации i присваивается 4.
Четыре по прежнему меньше пяти. К i добавляется единица, и теперь ее значение равно пяти.
Далее начинается шестая итерация цикла. Происходит проверка условия i < 5
. Но поскольку теперь оно возвращает ложь, то выполнение цикла прерывается, и его тело не выполняется.
«Смысловая нагрузка» данного цикла – это последовательное вычитание из переменной total вводимых чисел. Переменная i в данном случае играет только роль счетчика итераций цикла. В других языках программирования для таких случаев предусмотрен цикл for
, который так и называется: «цикл со счетчиком». Его преимущество заключается в том, что в теле цикла не надо изменять переменную-счетчик, ее значение меняется автоматически в заголовке for
.
В языке Python тоже есть цикл for
. Но это не цикл со счетчиком. В Питоне он предназначен для перебора элементов последовательностей и других сложных объектов. Данный цикл и последовательности будут изучены в последующих уроках.
Для while
наличие счетчика не обязательно. Представим, что надо вводить числа, пока переменная total больше нуля. Тогда код будет выглядеть так:
total = 100 while total > 0: n = int(input()) total = total - n print("Ресурс исчерпан")
Сколько раз здесь выполнится цикл? Неизвестно, все зависит от вводимых значений. Поэтому у цикла со счетчиком известно количество итераций, а у цикла без счетчика – нет.
Самое главное для цикла while
– чтобы в его теле происходили изменения значений переменных, которые проверяются в его заголовке, и чтобы хоть когда-нибудь наступил случай, когда логическое выражение в заголовке возвращает False
. Иначе произойдет зацикливание.
Примечание 1. Не обязательно в выражениях total = total - n
и i = i + 1
повторять одну и ту же переменную. В Python допустим сокращенный способ записи подобных выражений: total -= n
и i += 1
.
Примечание 2. При использовании счетчика он не обязательно должен увеличиваться на единицу, а может изменяться в любую сторону на любое значение. Например, если надо вывести числа кратные пяти от 100 до 0, то изменение счетчика будет таким i = i - 5
, или i -= 5
.
Примечание 3. Для счетчика не обязательно использовать переменную с идентификатором i. Можно назвать переменную-счетчик как угодно. Однако так принято в программировании, что счетчики обозначают именами i и j (иногда одновременно требуются два счетчика).
Практическая работа
Измените последний код из урока так, чтобы переменная total не могла уйти в минус. Например, после предыдущих вычитаний ее значение стало равным 25. Пользователь вводит число 30. Однако программа не выполняет вычитание, а выводит сообщение о недопустимости операции, после чего осуществляет выход из цикла.
Используя цикл
while
, выведите на экран для числа 2 его степени от 0 до 20. Возведение в степень в Python обозначается как**
. Фрагмент вывода:... 32 64 128 256 512 1024 ...
Примеры решения и дополнительные уроки в android-приложении и pdf-версии курса
Цикл for и цикл while в Python — 9 примеров
Циклы в Python позволяют разработчикам повторять определенные части своего кода через ряд циклов, которые называются итерациями. Python поддерживает цикл for и цикл while.
Синтаксис цикла for в Python
Цикл for в Python итерирует по заданной последовательности и обладает следующим синтаксисом:
for <variable> in <iterable>:
for <variable> in range(<number>):
for <variable> in range(<start_number>, <end_number>):
for <variable> in range(<start_number>, <end_number>, <step_size>):
for i, <variable> in enumerate(<iterable>): # с индексом i
for <variable1>, <variable2> in zip(<iterable1>, <iterable2>):
Синтаксис цикла while в Python
Цикл while в Python повторяется, пока выполняется определенное логическое условие и обладает следующим синтаксисом:
while <boolean expression>:
...
Как работать с циклами в Python?
Ниже собраны примеры решений основных задач, с которыми сталкиваются Python разработчики и дата-саентисты:
Как перебрать значения списка циклом for?
Циклы for перебирают коллекцию элементов, таких как list или dict, и запускают блок кода с каждым элементом из коллекции.
for i in [0, 1, 2, 3, 4]:
print(i)
# Вывод:
# 0
# 1
# 2
# 3
# 4
Вышеприведенный цикл for выполняет итерацию по списку чисел.
Каждая итерация устанавливает значение i для следующего элемента списка. Итак, сначала это будет 0, затем 1, затем 2 и т.д
Аналогично, цикл работает с любыми типами списков, например, со списком строк:
for x in ['one', 'two', 'three', 'four']:
print(x)
# Вывод:
# one
# two
# three
# four
Часто, необходимо сгенерировать последовательность чисел и обойти ее, для этого удобно использовать функцию range:
for x in range(1, 6):
print(x)
# Вывод:
# 1
# 2
# 3
# 4
# 5
Как получить индекс элемента в цикле for в Python?
Если вы хотите зациклить как элементы списка, так и индекс для элементов, вы можете использовать функцию enumerate:
for index, item in enumerate(['one', 'two', 'three', 'four']):
print(index, '::', item)
# Вывод:
# (0, '::', 'one')
# (1, '::', 'two')
# (2, '::', 'three')
# (3, '::', 'four')
Функция enumerate генерирует кортежи, которые распаковываются в индекс (целое число) и элемент (фактическое значение из списка).
Как перебрать словарь (dict) циклом for?
Ключи словаря в Python можно перебрать циклом for следующим образом:
d = {"a": 1, "b": 2, "c": 3}
for key in d:
print(key)
# Вывод:
# "a"
# "b"
# "c"
Это эквивалентно использованию метода словаря keys:
d = {"a": 1, "b": 2, "c": 3}
for key in d.keys():
print(key)
# Вывод:
# "a"
# "b"
# "c"
Для перебора значений словаря в Python необходимо использовать метод словаря values:
d = {"a": 1, "b": 2, "c": 3}
for value in d.values():
print(values)
# Вывод:
# 1
# 2
# 3
Для перебора ключей и значений словаря используйте метод items:
d = {"a": 1, "b": 2, "c": 3}
for key, value in d.items():
print(key, "::", value)
# Вывод:
# a :: 1
# b :: 2
# c :: 3
Метод items возвращает последовательность кортежей, использование for с несколькими переменными (key, value) называется распаковкой. Ее можно применять и для списков:
collection = [('a', 'b', 'c'), ('x', 'y', 'z'), ('1', '2', '3')]
for i1, i2, i3 in collection:
print('i1 =', i1, ':: i2 =', i2, ':: i3 =', i3)
# Вывод:
# i1 = a :: i2 = b :: i3 = c
# i1 = x :: i2 = y :: i3 = z
# i1 = 1 :: i2 = 2 :: i3 = 3
Как работает цикл while в Python?
Цикл while будет повторять код в блоке, пока условие цикла не станет False. Следующий код выполнит код в блоке цикла 4 раза:
i = 0
while i
Если условие всегда истинно, цикл while будет выполняться бесконечно. Бесконечный цикл можно завершить оператором break, return или исключением.
while True:
print "Infinite loop"
# Вывод:
# Infinite loop
# Infinite loop
# Infinite loop
# ...
Что такое pass в Python или как ничего не делать в цикле?
pass — это нулевой оператор и используется, когда оператор требуется синтаксисом Python (например, в теле цикла for или while), но никакие действия не нужны. Этот оператор можно использовать как заполнитель для кода, который ещё не написан.
for x in range(10):
pass # нам не нужно ничего выполнять или пока не знаем что здесь должно быть, поэтому используем pass
В этом примере ничего не произойдёт. Цикл for завершится без ошибок, но никакие команды или код не будут выполнены. pass позволяет нам успешно выполнять наш код без полной реализации всех команд и действий.
Аналогично, pass можно использовать в циклах while, а также в выборках, определениях функций и т.д.
while x == y:
pass
Как выполнить следующий проход цикла используя оператор continue?
Оператор continue перейдет к следующей итерации цикла, минуя остаток текущего блока кода, но продолжая цикл. Оператор continue может использоваться только внутри цикла:
for i in (0, 1, 2, 3, 4, 5):
if i == 2 or i == 4:
continue
print(i)
# Вывод:
# 0
# 1
# 3
# 5
Обратите внимание, что 2 и 4 не выводятся. Это происходит потому, что continue переходит к следующей итерации, а не продолжает выводить i, когда i==2 или i==4.
Как досрочно выйти из цикла используя оператор break?
Оператор break моментально прерывает дальнейшее выполнение кода внутри цикла:
i = 0
while i
Использование операторы break, как и в случае с continue, допускаются только внутри циклов.
Оператор break также доступен внутри циклов for:
for i in (0, 1, 2, 3, 4):
print(i)
if i == 2:
break
# Вывод:
# 0
# 1
# 2
Обратите внимание, что 3 и 4 не выводятся после окончания цикла.
Если цикл имеет условие else, оно не выполняется, когда цикл завершается с помощью оператора break.
Как выполнить код после завершения цикла используя оператор else?
Циклы for и while могут иметь условие else.
Условие else выполняется только после завершения цикла for путем итерации до завершения в случае цикла for или после завершения цикла while, когда его условное выражение становится ложным.
Пример условия else в цикле for:
for i in range(3):
print(i)
else:
print('done')
# Вывод:
# 0
# 1
# 2
# done
Пример условия else в цикле while:
i = 0
while i
Условие else не выполняется, если цикл завершается принудительно (например, с помощью оператора break или путем вызова исключения):
for i in range(2):
print(i)
if i == 1:
break
else:
print('done')
# Вывод:
# 0
# 1
Зачем использовать конструкцию for/while … else?
Частой задачей на использование конструкции for … else является реализация поиска, например:
a = [1, 2, 3, 4]
for i in a:
if type(i) is not int:
print(i)
break
else:
print("no exception")
# Вывод:
# no exception
Для простоты восприятия, можно читать эту конструкцию как «if not break» или «if not found».
Как вернуть значение из цикла оператором return?
Оператор return выводит значение из функции, не выполняя следующий за нем код.
Если у вас есть цикл внутри функции, использование return внутри цикла эквивалентно break, поскольку остальная часть кода цикла не выполняется. Код следующий за циклом также не выполняется:
def break_loop():
for i in range(1, 5):
if (i == 2):
return(i)
print(i)
return(5)
break_loop()
# Вывод:
# 1
# 2
Если вы используете return во вложенных циклах, оператор return прервёт все циклы:
def break_all():
for j in range(1, 5):
for i in range(1, 4):
if i*j == 6:
print('return')
return(i)
print(i*j)
# Вывод:
# 1
# 2
# 3
# 2
# 4
# return (потому что 2*3=6, остальные итерации обоих циклов не выполняются)
# 3 (это результат работы функции из return)
Упражнение для закрепления
Обойдите и распечатайте все четные числа из списка в том же порядке, в котором они были получены. Не печатайте цифры, которые появятся в последовательности после 237.
numbers = [
951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544,
615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941,
386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345,
399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217,
815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717,
958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470,
743, 527
]
# your code goes here
numbers = [
951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544,
615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941,
386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345,
399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217,
815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717,
958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470,
743, 527
]
# your code goes here
for number in numbers:
if number == 237:
break
if number % 2 == 1:
continue
print(number)
test_object("number", undefined_msg="Define a object `number` using the code from the tutorial to print just the desired numbers from the Упражнение description.",incorrect_msg="Your `number` object is not correct, You should use an `if` statement and a `break` statement to accomplish your goal.")
success_msg("Great work!")
Цикл while в Python (неопределенная итерация) — Регина Баталова
СодержаниеИтерация — выполнение одного и того же блока кода снова и снова. Конструкция программирования, реализующая итерацию, называется циклом.
В программировании есть два типа итераций: неопределенные и определенные:
В этом уроке вы:
- Узнаете о цикле
while
, конструкции управления Python, используемой для неопределенной итерации - Узнаете, как преждевременно выйти из цикла или итерации цикла
- Исследуете бесконечные циклы
По окончании вы должны хорошо понимать, как использовать неопределенную итерацию в Python.
Цикл
while
Давайте посмотрим, как используется оператор while
для построения циклов в Python. Мы начнем с более простого и будем усложнять.
Характер элементарного цикла while
показан ниже:
while : <statement(s)>
statement(s)
представляет собой блок для многократного выполнения, часто называется телом цикла. Обозначается отступом, как в операторе if
.
Запомните: все конструкции управления в Python используют отступы для определения блоков.
Управляющая конструкция — expr
обычно включает в себя одну или несколько переменных, которые инициализируются до начала цикла, а затем изменяются где-то в теле цикла.
Когда встречается while
цикл, expr
сначала оценивается в логическом контексте. Если это правда, тело цикла выполняется. Затем expr
проверяется снова, и если это опять правда, то выполняется снова. Это продолжается до тех пор, пока expr
станет ложью, после чего выполнение программы переходит к первому оператору после тела цикла.
Рассмотрим этот цикл:
while < expr >: < statement(s) >
Вот что происходит в этом примере:
n
изначально равно 5. Выражение вwhile
заголовке оператораn > 0
имеет значение true, поэтому тело цикла выполняется. Внутри тела циклаn
уменьшается на 1 до 4 и затем печатается.- Когда тело цикла завершено, выполнение программы возвращается к началу цикла, и выражение проверяется снова. Оно все еще true, поэтому тело выполняется снова и 3 печатается.
- Это продолжается до тех пор, пока не
n
станет 0. В этот момент, когда выражение проверяется, оно ложно, и цикл завершается.
Обратите внимание, что управляющее выражение цикла while
проверяется первым, прежде чем еще что‑то произойдет. Если начинать с false, тело цикла не будет выполнено вообще:
n = 5 while n > 0: n -= 1 print(n)
В приведенном выше примере, когда встречается цикл, n
равно 0. Управляющее выражение n > 0
уже ложно, поэтому тело цикла никогда не выполнится.
Вот еще один while
цикл, включающий список, а не числовое сравнение:
a = ['foo', 'bar', 'baz'] while a: print(a.pop(-1))
Когда список оценивается в логическом контексте, он является истинным, если в нем есть элементы, и ложным, если он пуст. В этом примере a истинно, пока в нем есть элементы. После того, как все элементы будут удалены с помощью метода .pop ()
и список будет пуст, a примет значение «false», и цикл завершится.
Операторы Python
break
и continue
В каждом примере, который вы видели до этого, все тело while
цикла выполняется на каждой итерации. Python предоставляет два ключевых слова, которые преждевременно завершают итерацию цикла:
- Оператор break немедленно завершает цикл. Выполнение программы продолжается до первого оператора, следующего за телом цикла.
- Оператор continue немедленно завершает текущую итерацию цикла. В основном используется для пропуска итерации, или переходу к следующей итерации.
Различие между break
и continue
показано на рисунке:
Это файл скрипта с именем break.py
который демонстрирует работу оператора break
:
n = 5 while n > 0: n -= 1 if n == 2: break print(n) print('Цикл завершен.')
Запуск break.py
из интерпретатора командной строки приводит к следующему результату:
C:\Users\pythonguru\Documents>python break.py 4 3 Цикл завершен.
Когда n
станет равно 2, break оператор выполняется, цикл полностью завершается, и выполнение программы переходит к print()
оператору.
Следующий скрипт continue.py идентичен, за исключением continue оператора вместо break:
n = 5 while n > 0: n -= 1 if n == 2: continue print(n) print('Цикл завершен.')
Вывод continue.py
выглядит так:
C:\Users\pythonguru\Documents>python continue.py 4 3 1 0 Цикл завершен.
На этот раз, когда n
равно 2, continue оператор вызывает завершение этой итерации.
Таким образом, 2 не печатается. Выполнение возвращается к началу цикла, условие переоценивается, и оно все еще выполняется. Цикл возобновляется, завершается, когда n
становится 0, как ранее.
Условный оператор
else
Python допускает необязательное наличие else
в конце цикла while
. Это уникальная особенность Python, не встречающаяся в большинстве других языков программирования. Синтаксис показан ниже:
while : <statement(s)> else: <additional_statement(s)>
additional_statement(s
, указанный в условии else
, будет выполняться , когда прервётся цикл while
.
У вас может возникнуть вопрос: «Чем это полезно?». Вы можете сделать то же самое, поместив эти операторы сразу после while
цикла, без else
:
while <expr>: <statement(s)> <additional_statement(s)>
Какая разница?
В последнем случае, без else
, additional_statement(s)
будет выполняться после завершения while цикла, несмотря ни на что.
Когда условия помещены в else
, они будут выполняться только в том случае, если цикл завершается «по истощению», то есть, если цикл повторяется до тех пор, пока условие управления не станет ложным. Если цикл завершается break
оператором, условие else
не будет выполнено.
Рассмотрим следующий пример:
n = 5 while n > 0: n -= 1 print(n) else: print('Цикл выполнен.')
В этом случае цикл повторялся до тех пор, пока условие не стало false: n стало 0, а условие n > 0 стало ложным. Поскольку цикл прожил свою естественную жизнь, так сказать, условие else
было выполнено. Теперь обратите внимание на разницу здесь:
n = 5 while n > 0: n -= 1 print(n) if n == 2: break else: print('Цикл выполнен.')
Этот цикл преждевременно завершается с помощью break
, поэтому else
не выполняется.
Может показаться, что значение слова else не совсем соответствует while
циклу, а также if
оператору. Гвидо ван Россумએ, создатель Python, сказал, что, если бы он начал сначала, то исключил бы условие else
цикла while
из языка.
Какая-нибудь из следующих интерпретаций может помочь сделать ее более понятной:
- Думайте о заголовке цикла (while n > 0) как об if операторе (if n > 0), который выполняется снова и снова, и
else
выполняется, когда условие становится false. - Думайте об
else
, как если бы это был nobreak, поскольку следующий блок выполняется, если не былbreak
.
Если вы не найдете ни одну из этих интерпретаций полезной, просто проигнорируйте их.
Когда может быть полезным else
в цикле while
? Одна распространенная ситуация, если вы ищете в списке определенный элемент. Вы можете использовать break
для выхода из цикла, если элемент найден, и else
может содержать код, который должен быть выполнен, если элемент не найден:
a = ['foo', 'bar', 'baz', 'qux'] s = 'corge' i = 0 while i < len(a): if a[i] == s: # Processing for item found break i += 1 else: # Processing for item not found print(s, 'not found in list.')
Примечание. Приведенный выше код полезен для иллюстрации концепции, но на самом деле вы вряд ли будете искать список таким образом.
Прежде всего, списки обычно обрабатываются с определенной итерацией, а не
while
циклом. Определенная итерация (for) рассматривается в следующем уроке.Во-вторых, Python предоставляет встроенные способы поиска элемента в списке. Вы можете использовать
in
оператор:if s in a: print(s, 'found in list.') else: print(s, 'not found in list.')
list.index()
метод также будет работать. Этот метод вызывает исключение ValueError, если элемент не найден в списке, поэтому для его использования необходимо понимать обработку исключений. В Python вы используетеtry
оператор для обработки исключения. Пример приведен ниже:try: print(a.index('corge')) except ValueError: print(s, 'not found in list.')Вы узнаете об обработке исключений позже.
Условие else
с циклом while
— это немного странное, редко встречающееся явление. Но не избегайте его, в некоторых ситуациях else
может внести ясность в ваш код!
Бесконечные циклы
Предположим, вы пишете while
цикл, который теоретически никогда не заканчивается. Звучит странно, не правда ли?
Рассмотрим этот пример:
while True: print('foo')
Этот код был завершен сочетанием Ctrl+C , которое вызывает прерывание с помощью клавиатуры.Или это продолжалось бы бесконечно.
Правда никогда не станет ложью, либо у нас всех очень большие проблемы. Таким образом, while
True положит начало бесконечного цикла, который теоретически будет работать вечно.
Возможно это не похоже на то, что вы хотели бы сделать, но на самом деле этот шаблон используется довольно часто. Например, вы можете написать код для службы, которая запускается и работает постоянно, принимая запросы на обслуживание. «постоянно» в этом контексте означает, что он работает пока вы не отключите его.
Говоря более прозаично, запомните, что циклы могут быть разорваны с помощью оператора break
. Возможно, намного проще будет завершить цикл на основе условий, распознанных в теле цикла, а не на условии, оцененном сверху.
Вот еще один вариант показанного выше цикла, который последовательно удаляет элементы из списка, .pop()
пока он не станет пустым:
a = ['foo', 'bar', 'baz'] while True: if not a: break print(a.pop(-1))
Когда a
становится пустым, not
a становится истинным, и break
оператор выходит из цикла.
Вы также можете указать несколько break операторов в цикле:
while True: if <expr1>: # One condition for loop termination break ... if <expr2>: # Another termination condition break ... if <expr3>: # Yet another break
В подобных случаях, когда есть несколько условий для завершения цикла, часто проще выйти с помощью break из нескольких разных мест, чем пытаться указать все условия завершения в заголовке цикла.
Бесконечные циклы могут быть очень полезны. Просто помните, что вы должны убедиться, что цикл действительно разорвался, чтобы он не стал бесконечным.
Вложенные циклы while
Управляющие конструкции Python могут быть вложены друг в друга. Например, условные операторы if/elif/else
могут быть вложенными:
if age < 18: if gender == 'M': print('son') else: print('daughter') elif age >= 18 and age < 65: if gender == 'M': print('father') else: print('mother') else: if gender == 'M': print('grandfather') else: print('grandmother')
Точно так же while
цикл может содержаться в другом while
цикле, как показано здесь:
a = ['foo', 'bar'] while len(a): print(a.pop(0)) b = ['baz', 'qux'] while len(b): print('>', b.pop(0))
Оператор break
или continue
, найденный во вложенных циклах, применяется к ближайшему охватывающему циклу:
while <expr1>: statement statement while <expr2>: statement statement break # Applies to while <expr2>: loop break # Applies to while e<xpr1>: loop
Кроме того, while циклы могут быть вложены в if/elif/else операторы, и наоборот:
if <expr>: statement while <expr>: statement statement else: while <expr>: statement statement statement
while <expr>: if <expr>: statement elif <expr>: statement else: statement if <expr>: statement
Фактически, все управляющие кострукции Python могут смешиваться друг с другом в любой степени, в какой вам угодно. Так и должно быть. Представьте, как было бы неприятно, если бы были ограничения, такие как «while
цикл не может быть заключен в if
оператор» или «while
циклы могут быть вложены друг в друга не более чем на четыре глубины». Вам было бы очень трудно помнить все.
Казалось бы, произвольные числовые или логические ограничения считаются признаком плохого дизайна программного языка. К счастью, в Python этого не много.
Однолинейные циклы
while
Как и в if
операторе, while
цикл может быть указан в одной строке. Если в блоке, составляющем тело цикла, есть несколько операторов, они могут быть разделены точкой с запятой (;):
n = 5 while n > 0: n -= 1; print(n)
Это работает только с простыми утверждениями, вы не сможете объединить два составных оператора в одну строку. Таким образом, вы можете указать while
цикл в одной строке, как указано выше, и пишете if
оператор в одной строке:
if True: print('foo')
Но вы не можете сделать так:
while n > 0: n -= 1; if True: print('foo')
Помните, что PEP 8препятствует нескольким утверждениям в одной строке. Поэтому, вам не желательно делать так очень часто.
Вывод
В этом блоке вы узнали о неопределенной итерации с помощью цикла Python while
. Теперь вы можете:
- Строить основные и сложные
while
циклы - Выполнить цикл с
break
иcontinue
- Использовать
else
сwhile
циклом - Разбираться с бесконечными циклами
Теперь вы должны хорошо понимать, как выполнить фрагмент кода повторно.
ОРИГИНАЛ СТАТЬИ
Python для циклов
Python для циклов
Цикл for используется для перебора последовательности (то есть списка, кортежа, словарь, набор или строка).
Это меньше похоже на ключевое слово for в других языках программирования и больше похоже на метод итератора, как в других объектно-ориентированных языках программирования.
С помощью цикла for мы можем выполнить набор операторов, один раз для каждого элемента в списке, кортеже, наборе и т. Д.
Пример
Распечатайте каждый фрукт в списке фруктов:
fruit = ["яблоко", "банан", "вишня"]
для
х плодов:
печать (х)
Цикл for не требует предварительной установки индексирующей переменной.
Цикл по строке
Четные строки - это повторяемые объекты, они содержат последовательность символов:
Пример
Прокрутите буквы в слове "банан":
для x в "банане":
print (x)
Разрыв Заявление
С помощью оператора break мы можем остановить цикл до того, как он пройдёт через все элементы:
Пример
Выйти из цикла, когда x
- "банан":
fruit = ["яблоко", "банан", "вишня"]
для x во фруктах:
print (x)
, если x ==
«банан»:
перерыв
Пример
Выйти из цикла, если x
- "банан",
но на этот раз разрыв происходит до печати:
fruit = ["яблоко", "банан", "вишня"]
для x во фруктах:
, если x ==
«банан»:
перерыв
отпечаток (x)
Продолжение Заявления
С помощью оператора continue мы можем остановить текущая итерация цикла и перейти к следующей:
Пример
Не печатать банан:
fruit = ["яблоко", "банан", "вишня"]
для x во фруктах:
, если x ==
"банан":
продолжить
печать (x)
Диапазон () Функция
Чтобы перебрать набор кода заданное количество раз, мы можем использовать функцию range (),Функция range () возвращает последовательность чисел, начинающуюся с 0 по умолчанию и увеличивающуюся на 1 (по умолчанию), и заканчивающуюся указанным числом.
Обратите внимание, что диапазон (6) - это не значения от 0 до 6, а значения от 0 до 5.
Функция range () по умолчанию имеет начальное значение 0, однако можно указать начальное значение, добавив параметр: range (2, 6), который означает значения от 2 до 6 (но не включая 6):
По умолчанию функция range () увеличивает последовательность на 1, однако можно указать значение приращения, добавив третий параметр: range (2, 30, 3 ):
Пример
Увеличить последовательность на 3 (по умолчанию 1):
для x в диапазоне (2, 30, 3):
печать (х)
Остальное в цикле For
Ключевое слово else
в для цикла
определяет блок кода, который будет
выполняется, когда цикл завершен:
Пример
Распечатайте все числа от 0 до 5 и распечатайте сообщение, когда цикл закончится:
для x в диапазоне (6):
print (x)
иначе:
print («Наконец-то закончено!»)
Примечание: Блок else
НЕ будет выполняться, если цикл остановлен оператором break
.
Пример
Разорвите цикл, когда x
равно 3, и посмотрите, что произойдет с иначе
блок:
для x в диапазоне (6):
, если x == 3: перерыв
print (x)
иначе:
print («Наконец-то закончено!»)
Вложенные циклы
Вложенный цикл - это цикл внутри цикла.
«Внутренний цикл» будет выполняться один раз для каждой итерации «внешнего петля »:
Пример
Выведите прилагательное для каждого фрукта:
adj = ["красный", "большой", "вкусный"]fruit = ["яблоко", "банан", "вишня"]
для x в adj:
для y в фруктах:
print (x, y)
Пропуск Заявление
для
петель не может быть пустым, но если вы для
по какой-то причине у вас есть цикл для
без содержимого, введите оператор pass
, чтобы избежать ошибки.
Python, а цикл
Что такое цикл while в Python?
Цикл while в Python используется для перебора блока кода, пока проверочное выражение (условие) истинно.
Обычно мы используем этот цикл, когда заранее не знаем, сколько раз нужно выполнить итерацию.
Синтаксис цикла while в Python
в то время как test_expression: Кузов а
В цикле while сначала проверяется тестовое выражение.Тело цикла вводится только в том случае, если test_expression
оценивается как True
. После одной итерации тестовое выражение проверяется снова. Этот процесс продолжается до тех пор, пока test_expression
не оценивается как False
.
В Python тело цикла while определяется отступом.
Тело начинается с отступа, а первая строка без отступа отмечает конец.
Python интерпретирует любое ненулевое значение как True
. Нет
и 0
интерпретируются как Ложь
.
Блок-схема цикла while
Блок-схема цикла while в PythonПример: Python while Loop
# Программа для добавления натурального
# номера до
# сумма = 1 + 2 + 3 + ... + n
# Чтобы принять ввод от пользователя,
# n = int (input ("Введите n:"))
п = 10
# инициализировать сумму и счетчик
сумма = 0
я = 1
пока я <= n:
сумма = сумма + я
i = i + 1 # обновить счетчик
# выводим сумму
print ("Сумма есть", sum)
Когда вы запустите программу, вывод будет:
Введите n: 10 Сумма 55
В приведенной выше программе тестовым выражением будет True
, пока наша переменная счетчика i меньше или равна n (10 в нашей программе).
Нам нужно увеличить значение переменной счетчика в теле цикла. Это очень важно (и по большей части о нем забывают). В противном случае возникнет бесконечный цикл (бесконечный цикл).
Наконец, отображается результат.
Цикл while с else
То же, что и с циклами for, в то время как циклы также могут иметь дополнительный блок else
.
Часть else
выполняется, если условие в цикле while оценивается как False
.
Цикл while можно завершить с помощью оператора break. В таких случаях часть else
игнорируется. Следовательно, часть цикла while else
выполняется, если не происходит разрыва и условие ложно.
Вот пример, иллюстрирующий это.
'' 'Пример для иллюстрации
использование оператора else
с циклом while '' '
counter = 0
пока счетчик <3:
print ("Внутренний цикл")
counter = counter + 1
еще:
print («Внутри остального»)
Выход
Внутренний контур Внутренний цикл Внутренний цикл Внутри остальное
Здесь мы используем переменную счетчика для трехкратной печати строки Inside loop .
На четвертой итерации условие в , а
становится False
. Следовательно, выполняется часть else
.
Python "while" циклы (неопределенная итерация) - Real Python
Смотреть сейчас В этом руководстве есть связанный видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Mastering While Loops
Итерация означает выполнение одного и того же блока кода снова и снова, возможно, много раз.Программная структура, реализующая итерацию, называется циклом .
В программировании есть два типа итераций, неопределенные и определенные:
При неопределенной итерации количество выполнений цикла не указывается заранее. Напротив, назначенный блок выполняется многократно, пока выполняется какое-либо условие.
При определенной итерации , количество раз, когда назначенный блок будет выполняться, указывается явно в момент начала цикла.
В этом руководстве вы:
- Узнайте о цикле
while
, управляющей структуре Python, используемой для неопределенной итерации - Узнайте, как преждевременно выйти из цикла или итерации цикла
- Исследуйте бесконечные циклы
Когда вы закончите, вы должны хорошо понимать, как использовать неопределенную итерацию в Python.
Пройдите викторину: Проверьте свои знания с помощью нашей интерактивной викторины «Питон» и «Петли».По завершении вы получите оценку, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройти тест »
в то время как
Петля Давайте посмотрим, как оператор Python while
используется для построения циклов. Мы начнем с простого и будем приукрашивать.
Формат элементарного цикла и
показан ниже:
, а <выражение>:
<заявление (я)>
<оператор (ы)>
представляет блок, который должен быть повторно выполнен, часто называемый телом цикла.Это обозначается отступом, как в заявлении if
.
Помните: Все управляющие структуры в Python используют отступ для определения блоков. См. Обсуждение операторов группировки в предыдущем учебном пособии.
Управляющее выражение
обычно включает одну или несколько переменных, которые инициализируются перед запуском цикла, а затем изменяются где-то в теле цикла.
Когда встречается цикл , а
,
сначала оценивается в логическом контексте.Если это правда, тело цикла выполняется. Затем
проверяется снова, и если все еще истинно, тело выполняется снова. Это продолжается до тех пор, пока
не станет ложным, после чего выполнение программы перейдет к первому оператору за пределами тела цикла.
Рассмотрим этот цикл:
>>> 1 >>> п = 5
2 >>> пока n> 0:
3 ... п - = 1
4 ... печать (n)
5 ...
64
73
82
91
100
Вот что происходит в этом примере:
n
- это изначально5
.Выражение в заголовке оператораwhile
в строке 2 имеет видn> 0
, что верно, поэтому тело цикла выполняется. Внутри тела цикла в строке 3 значениеn
уменьшается на1
до4
и затем печатается.Когда тело цикла завершено, выполнение программы возвращается к началу цикла в строке 2, и выражение вычисляется снова. Это все еще верно, поэтому тело снова выполняется, и печатается
3
.Это продолжается до тех пор, пока
n
не станет0
. В этот момент, когда выражение проверяется, оно ложно, и цикл завершается. Выполнение будет возобновлено с первого оператора, следующего за телом цикла, но в данном случае его нет.
Обратите внимание, что сначала проверяется управляющее выражение цикла while
, прежде чем что-либо произойдет. Если изначально задано значение false, тело цикла никогда не будет выполнено:
>>> п = 0
>>> пока n> 0:
... n - = 1
... print (n)
...
В приведенном выше примере, когда встречается цикл, n
равно 0
. Управляющее выражение n> 0
уже ложно, поэтому тело цикла никогда не выполняется.
Вот еще один цикл while
, включающий список, а не числовое сравнение:
>>> a = ['foo', 'bar', 'baz']
>>> а:
... печать (a.pop (-1))
...
баз
бар
фу
Когда список оценивается в логическом контексте, он является истинным, если в нем есть элементы, и ложным, если он пуст.В этом примере a
истинно, пока в нем есть элементы. После того, как все элементы были удалены с помощью метода .pop ()
и список пуст, a
ложно, и цикл завершается.
Python
break
и continue
Утверждения В каждом из примеров, которые вы видели до сих пор, все тело цикла и
выполняется на каждой итерации. Python предоставляет два ключевых слова, которые преждевременно завершают итерацию цикла:
Оператор Python
break
немедленно полностью завершает цикл.Выполнение программы переходит к первому оператору, следующему за телом цикла.Оператор Python
continue
немедленно завершает текущую итерацию цикла. Выполнение переходит к началу цикла, и управляющее выражение повторно оценивается, чтобы определить, будет ли цикл выполняться снова или завершиться.
Различие между break
и continue
показано на следующей диаграмме:
Вот файл сценария под названием break.py
, который демонстрирует разрыв , оператор
:
1n = 5
2 при n> 0:
3 п - = 1
4, если n == 2:
5 перерыв
6 отпечатков (п)
7print ('Цикл закончился.')
Запуск break.py
из интерпретатора командной строки дает следующий вывод:
C: \ Users \ john \ Documents> python break.py
4
3
Цикл закончился.
Когда n
становится 2
, выполняется оператор break
.Цикл полностью завершается, и выполнение программы переходит к оператору print ()
в строке 7.
Следующий сценарий, continue.py
, идентичен, за исключением оператора continue
вместо разрыва
:
1n = 5
2 при n> 0:
3 п - = 1
4, если n == 2:
5 продолжить
6 отпечатков (п)
7print ('Цикл закончился.')
Результат continue.py
выглядит так:
C: \ Users \ john \ Documents> python continue.ру
4
3
1
0
Цикл закончился.
На этот раз, когда n
равно 2
, оператор continue
вызывает завершение этой итерации. Таким образом, 2
не печатается. Выполнение возвращается к началу цикла, условие переоценивается, и оно по-прежнему остается верным. Цикл возобновляется и завершается, когда n
становится 0
, как и раньше.
еще
Пункт Python допускает необязательное предложение else
в конце цикла while
.Это уникальная особенность Python, которой нет в большинстве других языков программирования. Синтаксис показан ниже:
, а <выражение>:
<заявление (я)>
еще:
<дополнительные_условия>
, указанное в предложении else
, будет выполнено, когда цикл и
завершится.
Примерно сейчас вы можете подумать: «Чем это полезно?» Вы можете сделать то же самое, поместив эти операторы сразу после цикла while
, без else
:
, а <выражение>:
<заявление (я)>
<дополнительные_условия>
В чем разница?
В последнем случае, без предложения else
,
будет выполняться после , а цикл
завершится, несмотря ни на что.
Когда
помещены в предложение else
, они будут выполняться только в том случае, если цикл завершится «по исчерпанию», то есть, если цикл повторяется до тех пор, пока управляющее условие не станет ложным. Если цикл завершается оператором break
, предложение else
выполняться не будет.
Рассмотрим следующий пример:
>>> >>> п = 5
>>> пока n> 0:
... п - = 1
... print (n)
... еще:
... print ('Цикл выполнен.')
...
4
3
2
1
0
Петля сделана.
В этом случае цикл повторяется до тех пор, пока условие не будет исчерпано: n
стало 0
, поэтому n> 0
стало ложным. Поскольку цикл дожил, так сказать, свою естественную жизнь, условие else
было выполнено. Теперь обратите внимание на разницу:
>>> п = 5
>>> пока n> 0:
... п - = 1
... print (n)
... если n == 2:
... перерыв
... еще:
... print ('Цикл выполнен.')
...
4
3
2
Этот цикл прерывается преждевременно с помощью break
, поэтому предложение else
не выполняется.
Может показаться, что значение слова else
не совсем подходит для цикла while
, как и для оператора if
. Гвидо ван Россум, создатель Python, на самом деле сказал, что, если бы ему пришлось делать это снова, он бы исключил из языка , в то время как цикл
, , еще предложение
.
Одно из следующих толкований может помочь сделать его более интуитивным:
Думайте о заголовке цикла (
, а n> 0,
) как о заявленииif
(, если n> 0,
), которое выполняется снова и снова, причем предложениеelse
, наконец, выполняется, когда условие становится ложный.Подумайте о
, иначе о
, как обез перерыва
, в том смысле, что следующий за ним блок выполняется, если не былоперерыва
.
Если вы не находите ни одно из этих толкований полезным, не стесняйтесь их игнорировать.
Когда может быть полезно предложение else
в цикле и
? Одна из распространенных ситуаций - это поиск в списке определенного элемента. Вы можете использовать break
для выхода из цикла, если элемент найден, а предложение else
может содержать код, который должен выполняться, если элемент не найден:
>>> a = ['foo', 'bar', 'baz', 'qux']
>>> s = 'corge'
>>> я = 0
>>> пока я
Примечание: Приведенный выше код полезен для иллюстрации концепции, но на самом деле вы вряд ли будете искать в списке таким образом.
Прежде всего, списки обычно обрабатываются с определенной итерацией, а не с циклом while
. Определенная итерация рассматривается в следующем руководстве этой серии.
Во-вторых, Python предоставляет встроенные способы поиска элемента в списке. Вы можете использовать в операторе
:
>>> если в:
... print (s, 'найдено в списке.')
... еще:
... print (s, 'не найдено в списке.')
...
corge не найден в списке.
Также подойдет метод list.index ()
. Этот метод вызывает исключение ValueError
, если элемент не найден в списке, поэтому для его использования необходимо понимать обработку исключений.В Python вы используете оператор try
для обработки исключения. Пример приведен ниже:
>>> попробуйте:
... печать (a.index ('corge'))
... кроме ValueError:
... print (s, 'не найдено в списке.')
...
corge не найден в списке.
Об обработке исключений вы узнаете позже в этой серии.
Предложение else
с циклом while
- это немного странность, которую не часто можно увидеть. Но не уклоняйтесь от этого, если вы обнаружите ситуацию, в которой, как вам кажется, это добавляет ясности в ваш код!
Бесконечные петли
Предположим, вы пишете цикл и
, который теоретически никогда не заканчивается.Звучит странно, правда?
Рассмотрим следующий пример:
>>> >>> while True:
... печать ('фу')
...
фу
фу
фу
.
.
.
фу
фу
фу
KeyboardInterrupt
Отслеживание (последний вызов последний):
Файл "", строка 2, в
печать ('фу')
Этот код был прерван командой Ctrl + C , которая генерирует прерывание с клавиатуры. В противном случае это продолжалось бы бесконечно. Многие выходные строки foo
были удалены и заменены вертикальным многоточием в показанном выходе.
Ясно, что Истинный
никогда не будет ложным, иначе у всех нас будут большие проблемы. Таким образом, while True:
инициирует бесконечный цикл, который теоретически будет выполняться вечно.
Может быть, это не похоже на то, что вы хотели бы делать, но этот шаблон на самом деле довольно распространен. Например, вы можете написать код для службы, которая запускается и работает постоянно, принимая запросы на обслуживание. «Навсегда» в этом контексте означает, пока вы не выключите его, или пока не наступит тепловая смерть вселенной, в зависимости от того, что наступит раньше.
Проще говоря, помните, что цикл может быть разорван с помощью оператора break
. Может быть проще завершить цикл на основе условий, распознаваемых в теле цикла, а не на основе условия, оцененного наверху.
Вот еще один вариант цикла, показанный выше, который последовательно удаляет элементы из списка с помощью .pop ()
, пока он не станет пустым:
>>> a = ['foo', 'bar', 'baz']
>>> в то время как True:
... если не:
... перерыв
... печать (a.pop (-1))
...
баз
бар
фу
Когда a
становится пустым, not a
становится истинным, и оператор break
выходит из цикла.
Вы также можете указать несколько операторов break
в цикле:
пока True:
if : # Одно условие для завершения цикла
перерыв
...
if : # Другое условие завершения
перерыв
...
if : # Еще один
перерыв
В подобных случаях, когда есть несколько причин для завершения цикла, часто проще прервать
из нескольких разных мест, чем пытаться указать все условия завершения в заголовке цикла.
Бесконечные циклы могут быть очень полезны. Просто помните, что вы должны в какой-то момент разорвать цикл, чтобы он не стал бесконечным.
Вложенные
, а
Петли В общем, управляющие структуры Python могут быть вложены друг в друга. Например, if
/ elif
/ else
условные операторы могут быть вложенными:
для лиц младше 18 лет:
если пол == 'M':
печать ('сын')
еще:
print ('дочь')
elif age> = 18 и age <65:
если пол == 'M':
печать ('отец')
еще:
печать ('мать')
еще:
если пол == 'M':
print ('дедушка')
еще:
print ('бабушка')
Точно так же цикл , а
может содержаться в другом цикле , а
, как показано здесь:
>>> a = ['foo', 'bar']
>>> пока len (a):
... print (a.pop (0))
... b = ['baz', 'qux']
... пока len (b):
... печать ('>', b.pop (0))
...
фу
> баз
> qux
бар
> баз
> qux
break
или continue Оператор
, обнаруженный во вложенных циклах, применяется к ближайшему охватывающему циклу:
, а :
утверждение
утверждение
в то время как :
утверждение
утверждение
break # Применяется к циклу while :
break # Применяется к циклу while :
Кроме того, циклы и
могут быть вложены в , если
/ elif
/ else
операторы, и наоборот:
, если :
утверждение
в то время как :
утверждение
утверждение
еще:
в то время как :
утверждение
утверждение
утверждение
, а <выражение>:
если <выражение>:
утверждение
элиф <выражение>:
утверждение
еще:
утверждение
если <выражение>:
утверждение
Фактически, все управляющие структуры Python могут смешиваться друг с другом в той степени, в которой вам нужно.Так и должно быть. Представьте, как было бы неприятно, если бы возникли неожиданные ограничения, такие как «Цикл , в то время как цикл
не может содержаться в операторе if
» или «, в то время как циклы
могут быть вложены друг в друга не более чем на четыре глубины». Вам будет очень сложно их все запомнить.
Кажущиеся произвольными числовые или логические ограничения считаются признаком плохой разработки языка программы. К счастью, вы не найдете многих в Python.
Однострочный
, а
Петли Как и в случае с оператором if
, цикл while
может быть указан в одной строке.Если в блоке, составляющем тело цикла, несколько операторов, их можно разделить точкой с запятой (;
):
>>> п = 5
>>> пока n> 0: n - = 1; печать (п)
4
3
2
1
0
Но это работает только с простыми операторами. Невозможно объединить два составных оператора в одну строку. Таким образом, вы можете указать цикл , а
все в одной строке, как указано выше, и написать оператор if
в одной строке:
>>> если True: print ('foo')
фу
Но вы не можете этого сделать:
>>> >>> при n> 0: n - = 1; если True: print ('foo')
SyntaxError: недопустимый синтаксис
Помните, что PEP 8 не рекомендует использовать несколько операторов в одной строке.Так что вам, вероятно, в любом случае не следует делать это очень часто.
Заключение
В этом руководстве вы узнали о неопределенной итерации с использованием цикла Python while
. Теперь вы можете:
- Построить базовый и сложный
, а петли
- Выполнение цикла прерывания с
break
иcontinue
- Используйте предложение
else
с цикломwhile
- Работа с бесконечными циклами
Теперь вы должны хорошо понимать, как многократно выполнять фрагмент кода.
Пройдите викторину: Проверьте свои знания с помощью нашей интерактивной викторины «Питон» и «Петли». По завершении вы получите оценку, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройти тест »
В следующем руководстве этой серии рассматривается определенная итерация с для циклов
- повторяющееся выполнение, в котором количество повторений указывается явно.
Смотреть сейчас В этом руководстве есть связанный видеокурс, созданный командой Real Python.Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Mastering While Loops
Python While Loop - GeeksforGeeks
Python While Loop используется для многократного выполнения блока операторов, пока не будет выполнено заданное условие. И когда условие становится ложным, выполняется строка сразу после цикла в программе. Цикл while подпадает под категорию с неопределенной итерацией . Бесконечная итерация означает, что количество выполнений цикла не указывается заранее.
Синтаксис:
в то время как выражение: Оператор (ы)
Операторы представляют все операторы, с отступом равным одинаковому количеству пространств символов после того, как программная конструкция считается частью одного блока кода. Python использует отступы как метод группировки операторов. Когда выполняется цикл while, expr сначала оценивается в логическом контексте, и если оно истинно, выполняется тело цикла. Затем expr проверяется снова, если оно все еще истинно, тело выполняется снова, и это продолжается до тех пор, пока выражение не станет ложным.
Блок-схема цикла while: Пример 1: Python While LoopPython3
|
Hello Geek Привет Компьютерщик Привет, компьютерщик
В приведенном выше примере условие для while будет истинным, пока переменная счетчика (count) меньше 3.
Пример 2: цикл Python while со списком
Python3
|
В приведенном выше примере мы запустили цикл while для списка, который будет выполняться до тех пор, пока в списке не появится элемент.
Один оператор while в блоке
Как и в случае с блоком if, если блок while состоит из одного оператора, мы можем объявить весь цикл в одной строке. Если в блоке, составляющем тело цикла, есть несколько операторов, их можно разделить точкой с запятой (;).
Python3
|
Вывод:
Hello Geek Привет Компьютерщик Привет Компьютерщик Привет Компьютерщик Hello Geek
Операторы управления циклом
Операторы управления циклом изменяют выполнение от его нормальной последовательности.Когда выполнение покидает область действия, все автоматические объекты, созданные в этой области, уничтожаются. Python поддерживает следующие управляющие операторы.
Оператор продолженияОператор продолжения Python возвращает управление в начало цикла.
Пример: цикл Python while с оператором continue
Python3
|
Вывод:
Текущая буква: g Текущая буква: k Текущая буква: f Текущее письмо: o Текущая буква: r Текущая буква: g Текущее письмо: kОператор Break
Python Оператор Break выводит управление из цикла.
Пример: цикл Python while с оператором break
Python3
|
Вывод:
Текущая буква: gЗаявление о передаче
Оператор передачи Python для записи пустых циклов.Pass также используется для пустых управляющих операторов, функций и классов.
Пример: цикл Python while с оператором прохода
Python3
|
Вывод:
Значение i: 13
Цикл while с else
Как обсуждалось выше, цикл while выполняет блок до тех пор, пока не будет выполнено условие.Когда условие становится ложным, выполняется инструкция сразу после цикла. Предложение else выполняется только тогда, когда ваше условие while становится ложным. Если вы выйдете из цикла или возникнет исключение, оно не будет выполнено.
Примечание: Блок else сразу после for / while выполняется только тогда, когда цикл НЕ завершается оператором break.
Python3
|
Выход:
1 2 3 4 Без остановки 1Sentinel Controlled Statement
В этом случае мы не используем никаких переменных-счетчиков, потому что мы не знаем, сколько раз будет выполняться цикл.Здесь пользователь решает, сколько раз он хочет выполнить цикл. Для этого мы используем дозорное значение. Контрольное значение - это значение, которое используется для завершения цикла всякий раз, когда пользователь входит в него, как правило, контрольное значение равно -1.
Пример: цикл Python while с пользовательским вводом
Python3
|
Вывод:
Объяснение:
- Сначала пользователю предлагается ввести число.если пользователь вводит -1, цикл не будет выполняться
- Пользователь вводит 6, и тело цикла выполняется и снова запрашивает ввод
- Здесь пользователь может вводить много раз, пока не введет -1, чтобы остановить цикл
- Пользователь может решите, сколько раз он хочет ввести ввод
Внимание компьютерщик! Укрепите свои основы с помощью курса Python Programming Foundation и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS .И чтобы начать свое путешествие по машинному обучению, присоединитесь к курсу Машинное обучение - базовый уровень
Python For & While Loops: Enumerate, Break, Continue Statement
Что такое цикл?
Циклы могут выполнять блок кода несколько раз, пока не будет выполнено определенное условие. Их использование довольно распространено в программировании. В отличие от других языков программирования, в которых есть цикл For Loop, while, dowhile и т. Д.
Что такое цикл For?
Цикл For используется для перебора элементов последовательности.Это часто используется, когда у вас есть фрагмент кода, который вы хотите повторить "n" раз.
Что такое цикл while?
Цикл в то время как цикл используется для повторения блока кода. Вместо того, чтобы запускать блок кода один раз, он выполняет блок кода несколько раз, пока не будет выполнено определенное условие.
В этом руководстве мы изучим
Как использовать цикл «Пока»
Цикл «пока» делает то же самое, что и «оператор if», но вместо того, чтобы запускать блок кода один раз, они возвращаются к точке, где он начал код и снова повторяет весь процесс.
Синтаксис
while выражение Заявление
Пример :
# # Пример файла для работы с петлями # х = 0 # определить цикл while в то время как (x <4): печать (х) x = x + 1
Выход
0 1 2 3
- Строка кода 4: для переменной x задано значение 0
- Строка кода 7: цикл while проверяет условие x <4. Текущее значение x равно 0. Условие верно. Поток управления входит в цикл while
- Строка кода 8: печатается значение x
- Строка кода 9: x увеличивается на 1.Поток управления возвращается к строке 7. Теперь значение x равно 1, что меньше 4. Условие истинно, и снова выполняется цикл while. Это продолжается до тех пор, пока x не станет 4, а условие while станет ложным.
Как использовать цикл «For»
В Python «циклы for» называются итераторами .
Как и цикл while, цикл For Loop также используется для повторения программы.
Но в отличие от цикла while, который зависит от условия true или false. «Цикл For» зависит от элементов, которые он должен повторять.
Пример :
# # Пример файла для работы с петлями # х = 0 # определить цикл while # while (x <4): # print x # х = х + 1 # Определите цикл for для x в диапазоне (2,7): print (x)
Вывод
2 3 4 5 6
Цикл For выполняет итерацию с номером, объявленным в диапазоне.
Например,
For Loop для x в диапазоне (2,7)
При выполнении этого кода он напечатает число от 2 до 7 (2,3,4,5,6).В этом коде число 7 не считается входящим в диапазон.
For Loops также может использоваться для множества других вещей, а не только для числа. Мы увидим тонкие в следующем разделе.
Как использовать цикл For для строки
На этом шаге мы увидим, как цикл for может использоваться не только для чисел, но и для других целей.
Пример :
# использовать цикл for для коллекции Месяцы = [«Янв», «Фев», «Мар», «Апрель», «Май», «Июнь»] за м в месяцах: печать (м)
Выход
Янв Фев Мар апрель Может Июнь
Строка кода 3: Мы сохраняем месяцы («Январь, Фев, Мар, Апрель, Май, Июнь») в переменной Месяцы
Строка кода 4: Мы повторяем цикл for по каждому значению в Месяцах.Текущее значение месяцев хранится в переменной m
Строка кода 5: распечатать месяц
Как использовать операторы прерывания в цикле For Loop
Точка останова - это уникальная функция в цикле For Loop, которая позволяет прервать или прекратить выполнение for loop
Пример :
# использовать цикл for для коллекции #Months = [«Янв», «Фев», «Мар», «Апрель», «Май», «Июнь»] # for m в месяцах: #print m # используйте операторы break и continue для x в диапазоне (10,20): если (x == 15): перерыв #if (x% 2 == 0): продолжить print (x)
Вывод
10 11 12 13 14
В этом примере мы объявили числа от 10 до 20, но мы хотим, чтобы наш цикл for завершился на номере 15 и прекратил выполнение дальше.Для этого мы объявляем функцию break, определяя (x == 15): break, поэтому, как только код вызывает число 15, он завершает программу Code Line 10, объявляет переменную x между диапазоном (10, 20)
- Code Line 11 объявить условие для точки останова в x == 15,
- Строка кода 12 проверяет и повторяет шаги, пока не достигнет номера 15
- Строка кода 13 Распечатать результат в выходных данных
Как использовать «оператор continue» в цикле For Loop
Функция Continue, как видно из названия, завершит текущую итерацию цикла for, НО продолжит выполнение оставшихся итераций.
Пример
# использовать цикл for над коллекцией #Months = [«Янв», «Фев», «Мар», «Апрель», «Май», «Июнь»] # for m в месяцах: #print m # используйте операторы break и continue для x в диапазоне (10,20): #if (x == 15): перерыв if (x% 5 == 0): продолжить print (x)
Вывод
11 12 13 14 16 17 18 19
Оператор Continue можно использовать в цикле for, если вы хотите получить определенное значение из списка.
В нашем примере мы объявили значение 10-20, но между этими числами нам нужны только те числа, которые НЕ делятся на 5 или, другими словами, не дают нуля при делении на 5.
Итак, в нашем range (10,11, 12… .19,20) выпадает только 3 числа (10,15,20), которые делятся на 5, а остальные - нет.
Таким образом, за исключением номеров 10,15 и 20, цикл for не будет продолжаться и распечатывать эти числа в качестве вывода.
- Строка кода 10 объявляет переменную x для диапазона (10, 20)
- Строка кода 12 объявляет условие для x, деленного на 5 = 0 продолжить
- Строка кода 13 печатает результат
Что такое enumerate () в Python?
enumerate () В PYTHON - это встроенная функция, используемая для присвоения индекса каждому элементу итеративного объекта.Он добавляет цикл для итерируемых объектов, отслеживая текущий элемент, и возвращает объект в перечислимой форме. Этот объект можно использовать в цикле for для преобразования его в список с помощью метода list ().
Пример :
Функция перечисления используется для нумерации или индексации элементов в списке.
Предположим, мы хотим выполнить нумерацию для нашего месяца (январь, февраль, Марк,…. Июнь), поэтому мы объявляем переменную i, которая перечисляет числа, в то время как m выводит номер месяца в списке.
# использовать цикл for для коллекции Месяцы = [«Янв», «Фев», «Мар», «Апрель», «Май», «Июнь»] для i, m в перечислении (Месяцы): печать (я, м) # используйте операторы break и continue # для x в диапазоне (10,20): #if (x == 15): перерыв #if (x% 5 == 0): продолжить #print x
Вывод
0 янв. 1 фев 2 марта 3 апреля 4 мая 5 июня
При выполнении кода выходные данные функции перечисления возвращают название месяца с порядковым номером, например (0 января), (1 февраля), (2 марта) и т. Д.
- Строка кода 3 объявляет список месяцев [январь, февраль,… июн]
- Строка кода 4 объявляет переменные i и m для цикла For
- Строка кода 5 выводит результат и снова вводит цикл For для остальных месяцев для перечисления
Практический пример
Давайте посмотрим на другой пример цикла For Loop, который повторяет одно и то же утверждение снова и снова.
Цикл Python | Рабочий код для всех упражнений |
---|---|
Код для цикла while | x = 0 в то время как (x <4): печать (х) x = x + 1 |
Простой пример цикла для цикла | x = 0 для x в диапазоне (2,7): print (x) |
Использование цикла for в строке | Месяцы = [«Янв», «Фев», «Март», «Апрель», «Май», «Июнь»] за м в (Месяцы): print (m) |
Используйте оператор break в цикле | для x в диапазоне (10,20): если (x == 15): перерыв print (x) |
Использование оператора Continue в цикле for | для x в диапазоне (10,20): if (x% 5 == 0): продолжить print (x) |
Код для «функции перечисления» с «циклом for» | Месяцы = [«Янв», «Фев», «Март», «Апрель», «Май», «Июнь»] для i, m в перечислении (Месяцы): print (i, m) |
Как использовать цикл for для повторения одного и того же оператора снова и снова
Вы можете использовать цикл for даже для повторения одного и того же оператора снова и снова.В этом примере мы трижды распечатали слово «guru99».
Пример: Чтобы повторить одно и то же утверждение несколько раз, мы объявили число в переменной i (i в 123). Поэтому, когда вы запускаете код, как показано ниже, он печатает оператор (guru99), который во много раз превышает число, объявленное для нашей переменной в (i in 123).
для i в '123': print ("guru99", i,)
Вывод
guru99 1 guru99 2 guru99 3
Как и другие языки программирования, Python также использует цикл, но вместо использования ряда различных циклов он ограничивается только двумя циклами: «цикл while» и «цикл for».
- Циклы while выполняются в зависимости от того, является ли условный оператор истинным или ложным.
- Циклы For называются итераторами, он выполняет итерацию элемента на основе набора условий
- Python Циклы For также можно использовать для набора различных других вещей (указание коллекции элементов, которые мы хотим перебрать)
- Используется точка останова in For Loop, чтобы прервать или завершить программу в любой конкретной точке
- Оператор Continue продолжит распечатывать инструкцию и распечатывает результат в соответствии с набором условий
- Функция перечисления в «for loop» возвращает член коллекции который мы рассматриваем с индексным номером
Python 2 Пример
Вышеприведенные коды являются примерами Python 3. Если вы хотите работать на Python 2, рассмотрите следующий код.
# Как использовать "Цикл пока" # Пример файла для работы с петлями # х = 0 # определить цикл while в то время как (x <4): напечатать x х = х + 1 # Как использовать "For Loop" # Пример файла для работы с петлями # х = 0 # определить цикл while # while (x <4): # print x # х = х + 1 # Определите цикл for для x в диапазоне (2,7): напечатать x # Как использовать цикл For для строки # использовать цикл for для коллекции Месяцы = [«Янв», «Фев», «Мар», «Апрель», «Май», «Июнь»] за м в месяцах: печать м # Как использовать операторы прерывания в цикле For Loop # использовать цикл for для коллекции #Months = [«Янв», «Фев», «Мар», «Апрель», «Май», «Июнь»] # for m в месяцах: #print m # используйте операторы break и continue для x в диапазоне (10,20): если (x == 15): перерыв #if (x% 2 == 0): продолжить напечатать x # Как использовать оператор продолжения в цикле For Loop # использовать цикл for для коллекции #Months = [«Янв», «Фев», «Мар», «Апрель», «Май», «Июнь»] # for m в месяцах: #print m # используйте операторы break и continue для x в диапазоне (10,20): #if (x == 15): перерыв if (x% 5 == 0): продолжить напечатать x # Как использовать функцию перечисления для цикла For Loop # использовать цикл for для коллекции Месяцы = [«Янв», «Фев», «Мар», «Апрель», «Май», «Июнь»] для i, m в перечислении (Месяцы): напечатать я, м # используйте операторы break и continue # для x в диапазоне (10,20): #if (x == 15): перерыв #if (x% 5 == 0): продолжить #print x
Вывод
0 1 2 3 2 3 4 5 6 Янв Фев Мар апрель Может июнь 10 11 12 13 14 11 12 13 14 16 17 18 19 0 янв 1 фев 2 марта 3 апреля 4 мая 5 июня
Python While Loop Tutorial - While True Примеры синтаксиса и бесконечные циклы
Добро пожаловать! Если вы хотите научиться работать с циклами while в Python, эта статья для вас.
Циклы while - это очень мощные программные структуры, которые вы можете использовать в своих программах для повторения последовательности операторов.
Из этой статьи вы узнаете:
- Что такое цикл while.
- Для чего они используются.
- Когда их следует использовать.
- Как они работают за кадром.
- Как написать цикл while в Python.
- Что такое бесконечные циклы и как их прервать.
- Для чего используется
, а True
и его общий синтаксис. - Как использовать оператор
break
для остановки цикла while.
Вы узнаете, как циклы while работают за кулисами, с примерами, таблицами и диаграммами.
Готовы? Давай начнем. 🔅
🔹 Назначение и варианты использования циклов while
Начнем с цели циклов while. Для чего они нужны?
Они используются для повторения последовательности операторов неизвестное количество раз. Этот тип цикла выполняет , в то время как заданное условие - True
, и он останавливается только тогда, когда условие становится False
.
Когда мы пишем цикл while, мы не определяем явно, сколько итераций будет выполнено, мы только записываем условие, которое должно быть True
для продолжения процесса и False
для его остановки.
💡 Совет: , если условие цикла while никогда не оценивается как False
, тогда у нас будет бесконечный цикл, который никогда не останавливается (теоретически) без внешнего вмешательства.
Вот несколько примеров реальных вариантов использования циклов while:
- Пользовательский ввод: Когда мы запрашиваем ввод пользователя, нам нужно проверить, является ли введенное значение допустимым.Мы не можем знать заранее, сколько раз пользователь введет неверный ввод, прежде чем программа сможет продолжить работу. Таким образом, цикл while был бы идеальным для этого сценария.
- Поиск: поиск элемента в структуре данных - еще один идеальный вариант использования цикла while, потому что мы не можем заранее знать, сколько итераций потребуется, чтобы найти целевое значение. Например, алгоритм двоичного поиска может быть реализован с использованием цикла while.
- Игры: В игре можно использовать цикл while, чтобы поддерживать выполнение основной логики игры до тех пор, пока игрок не проиграет или игра не закончится.Мы не можем знать заранее, когда это произойдет, так что это еще один идеальный сценарий для цикла while.
🔸 Как работают циклы while
Теперь, когда вы знаете, для чего используются циклы while, давайте посмотрим их основную логику и то, как они работают за кулисами. Здесь у нас есть диаграмма:
Цикл whileДавайте разберем это более подробно:
- Процесс запускается, когда во время выполнения программы обнаруживается цикл while.
- Условие оценивается, чтобы проверить, является ли оно
Истинно
илиЛожно
. - Если условие -
Истина
, выполняются операторы, принадлежащие циклу. - Снова проверяется условие цикла while.
- Если условие снова оценивается как
Истина
, последовательность операторов выполняется снова, и процесс повторяется. - Когда условие оценивается как
False
, цикл останавливается, и программа продолжается после цикла.
Одной из наиболее важных характеристик циклов while является то, что переменные, используемые в условии цикла, не обновляются автоматически.Мы должны явно обновить их значения с помощью нашего кода, чтобы убедиться, что цикл в конечном итоге остановится, когда условие оценивается как False
.
🔹 Общий синтаксис циклов while
Отлично. Теперь вы знаете, как работают циклы while, поэтому давайте погрузимся в код и посмотрим, как можно написать цикл while в Python. Это основной синтаксис:
Цикл по условию (синтаксис)Это основные элементы (по порядку):
- Ключевое слово
while
(за которым следует пробел). - Условие для определения того, будет ли цикл продолжаться или нет, на основе его истинного значения (
Истина,
илиЛожь,
). - Двоеточие (
:
) в конце первой строки. - Последовательность операторов, которые будут повторяться. Этот блок кода называется «телом» цикла, и он должен иметь отступ. Если оператор не имеет отступа, он не будет считаться частью цикла (см. Диаграмму ниже).
💡 Совет: Руководство по стилю Python (PEP 8) рекомендует использовать 4 пробела на каждый уровень отступа.Вкладки следует использовать только для обеспечения согласованности с кодом, который уже имеет отступ с вкладками.
🔸 Примеры циклов while
Теперь, когда вы знаете, как работают циклы while и как писать их на Python, давайте посмотрим, как они работают за кулисами, на некоторых примерах.
Как работает базовый цикл while
Здесь у нас есть базовый цикл while, который печатает значение i
, в то время как i
меньше 8 ( i <8
):
i = 4
пока я <8:
печать (я)
i + = 1
Если мы запустим код, мы увидим следующий результат:
4
5
6
7
Давайте посмотрим, что происходит за кулисами при выполнении кода:
- Итерация 1: изначально, значение
i
равно 4, поэтому условиеi <8
оценивается какTrue
и цикл начинает работать.Печатается значениеi
(4), и это значение увеличивается на 1. Цикл запускается снова. - Итерация 2: теперь значение
i
равно 5, поэтому условиеi <8
оценивается какTrue
. Выполняется тело цикла, печатается значениеi
(5), и это значениеi
увеличивается на 1. Цикл запускается снова. - Итерации 3 и 4: Тот же процесс повторяется для третьей и четвертой итераций, поэтому печатаются целые числа 6 и 7.
- Перед началом пятой итерации значение
i
равно8
. Теперь условие цикла whilei <8
оценивается какFalse
, и цикл немедленно останавливается.
💡 Совет: Если условие цикла while - False
перед запуском первой итерации, цикл while даже не запустится.
Пользовательский ввод с использованием цикла while
Теперь давайте посмотрим на пример цикла while в программе, которая принимает пользовательский ввод.Мы будем использовать функцию input ()
, чтобы попросить пользователя ввести целое число, и это целое число будет добавлено в список, только если оно четное.
Это код:
# Определить список
nums = []
# Цикл будет выполняться, пока длина
# список меньше 4
в то время как len (числа) <4:
# Запрашивать ввод данных пользователем и сохранять его в переменной как целое число.
user_input = int (input ("Введите целое число:"))
# Если введено четное число, добавить его в список
если user_input% 2 == 0:
числа.append (user_input)
Условие цикла: len (nums) <4
, поэтому цикл будет выполняться, пока длина списка nums
строго меньше 4.
Давайте проанализируем эту программу построчно. :
- Начнем с определения пустого списка и присвоения его переменной с именем
nums
.
nums = []
- Затем мы определяем цикл while, который будет выполняться, пока
len (nums) <4
.
while len (nums) <4:
- Мы запрашиваем ввод пользователя с помощью функции
input ()
и сохраняем его в переменнойuser_input
.
user_input = int (input ("Введите целое число:"))
💡 Совет: Нам нужно преобразовать (преобразовать) значение, введенное пользователем, в целое число с помощью функции int ()
перед присвоением его переменной, потому что функция input ()
возвращает строку (источник).
- Проверяем, четное это значение или нечетное.
if user_input% 2 == 0:
- Если четный, мы добавляем его в список
nums
.
nums.append (user_input)
- Иначе, если он нечетный, цикл запускается снова и условие проверяется, чтобы определить, следует ли продолжать цикл или нет.
Если мы запустим этот код с пользовательским вводом, мы получим следующий вывод:
Введите целое число: 3
Введите целое число: 4
Введите целое число: 2
Введите целое число: 1
Введите целое число: 7
Введите целое число: 6
Введите целое число: 3
Введите целое число: 4
В этой таблице показано, что происходит за кулисами при запуске кода:
💡 Совет: Начальное значение len (числа)
равно 0
, потому что список изначально пуст.Последний столбец таблицы показывает длину списка в конце текущей итерации. Это значение используется для проверки условия перед началом следующей итерации.
Как вы можете видеть в таблице, пользователь вводит четные целые числа во второй, третьей, шестой и восьмой итерациях, и эти значения добавляются к списку nums
.
Перед началом «девятой» итерации условие проверяется снова, но теперь оно оценивается как False
, потому что список nums
имеет четыре элемента (длина 4), поэтому цикл останавливается.
Если мы проверим значение списка nums
после завершения процесса, мы увидим следующее:
>>> nums
[4, 2, 6, 4]
В точности то, что мы и ожидали, цикл while остановился, когда условие len (nums) <4
было оценено как False
.
Теперь вы знаете, как циклы while работают за кулисами, и видели несколько практических примеров, поэтому давайте погрузимся в ключевой элемент циклов while: условие.
🔹 Советы по условию в циклах while
Прежде чем вы начнете работать с циклами while, вы должны знать, что условие цикла играет центральную роль в функциональности и выводе цикла while.
Вы должны быть очень осторожны с оператором сравнения, который вы выбираете, потому что это очень распространенный источник ошибок.
Например, общие ошибки включают:
- Использование
<
(меньше чем) вместо<=
(меньше или равно) (или наоборот). - Использование
>
(больше) вместо> =
(больше или равно) (или наоборот).
Это может повлиять на количество итераций цикла и даже на его результат.
Давайте посмотрим на пример:
Если мы напишем этот цикл while с условием i <9
:
i = 6
пока я <9:
печать (я)
я + = 1
Мы видим этот вывод при запуске кода:
6
7
8
Цикл выполняет три итерации и останавливается, когда i
становится равным 9
.
В этой таблице показано, что происходит за кулисами при выполнении кода:
- Перед первой итерацией цикла значение
i
равно 6, поэтому условиеi <9
равноTrue
и цикл начинает работать.Значениеi
печатается, а затем увеличивается на 1. - На второй итерации цикла значение
i
равно 7, поэтому условиеi <9
равноTrue
. Выполняется тело цикла, печатается значениеi
, а затем оно увеличивается на 1. - На третьей итерации цикла значение
i
равно 8, поэтому условиеi <9
- этоИстинный
. Выполняется тело цикла, печатается значениеi
, а затем оно увеличивается на 1. - Условие проверяется снова перед началом четвертой итерации, но теперь значение
i
равно 9, поэтомуi <9
равноFalse
и цикл останавливается.
В этом случае мы использовали <
в качестве оператора сравнения в условии, но как вы думаете, что произойдет, если вместо этого мы будем использовать <=
?
я = 6
пока я <= 9:
печать (я)
i + = 1
Мы видим этот вывод:
6
7
8
9
Цикл завершает еще одну итерацию, потому что теперь мы используем оператор «меньше или равно» <=
, поэтому условие по-прежнему Истинно
, когда i
равно 9
.
В этой таблице показано, что происходит за кулисами:
Четыре итерации выполнены. Условие проверяется еще раз перед запуском «пятой» итерации. В этот момент значение i
равно 10
, поэтому условие i <= 9
равно False
, и цикл останавливается.
🔸 Бесконечные циклы while
Теперь вы знаете, как работают циклы while, но как вы думаете, что произойдет, если условие цикла while никогда не оценивается как False
?
Что такое бесконечные циклы while?
Помните, что циклы while не обновляют переменные автоматически (мы отвечаем за это явно с нашим кодом).Таким образом, нет гарантии, что цикл остановится, если мы не напишем необходимый код, чтобы сделать условие False
в какой-то момент во время выполнения цикла.
Если мы этого не сделаем и условие всегда будет иметь значение True
, тогда у нас будет бесконечный цикл , который представляет собой цикл while, который выполняется бесконечно (теоретически).
Бесконечные циклы обычно являются результатом ошибки, но они также могут быть вызваны намеренно, когда мы хотим бесконечно повторять последовательность операторов, пока не будет найден оператор break
.
Давайте посмотрим на эти два типа бесконечных циклов в приведенных ниже примерах.
💡 Совет: Ошибка - это ошибка в программе, которая приводит к неверным или неожиданным результатам.
Пример бесконечного цикла
Это пример непреднамеренного бесконечного цикла, вызванного ошибкой в программе:
# Определить переменную
я = 5
# Запускаем этот цикл, пока i меньше 15
пока я <15:
# Распечатать сообщение
print ("Привет, мир!")
Проанализируйте этот код на мгновение.
Вы не замечаете, что чего-то не хватает в теле цикла?
Верно!
Значение переменной i
никогда не обновляется (всегда 5
). Следовательно, условие i <15
всегда равно True
, и цикл никогда не останавливается.
Если мы запустим этот код, на выходе будет «бесконечная» последовательность Hello, World!
сообщения, потому что тело цикла print («Hello, World!»)
будет выполняться бесконечно.
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
Привет, мир!
.
.
.
# Продолжается бесконечно
Чтобы остановить программу, нам нужно будет вручную прервать цикл, нажав CTRL + C
.
Когда мы это сделаем, мы увидим ошибку KeyboardInterrupt
, аналогичную этой:
Чтобы исправить этот цикл, нам нужно будет обновить значение i
в теле цикла, чтобы убедиться, что условие i <15
в конечном итоге оценивается как Ложь
.
Это одно из возможных решений, увеличивающее значение i
на 2 на каждой итерации:
i = 5
пока я <15:
print ("Привет, мир!")
# Обновить значение i
i + = 2
Отлично. Теперь вы знаете, как исправить бесконечные циклы, вызванные ошибкой. Вам просто нужно написать код, чтобы гарантировать, что условие в конечном итоге будет оцениваться как False
.
Давайте начнем погружаться в намеренные бесконечные циклы и то, как они работают.
🔹 Как создать бесконечный цикл с использованием While True
Мы можем сгенерировать бесконечный цикл намеренно, используя , а True
.В этом случае цикл будет выполняться бесконечно, пока процесс не будет остановлен внешним вмешательством ( CTRL + C
) или когда будет найден оператор break
(вы узнаете больше о break
буквально через мгновение).
Это основной синтаксис:
Вместо того, чтобы писать условие после ключевого слова while
, мы просто записываем значение истинности напрямую, чтобы указать, что условие всегда будет True
.
Вот пример:
>>> while True:
печать (0)
0
0
0
0
0
0
0
0
0
0
0
0
0
Отслеживание (последний вызов последний):
Файл "", строка 2, в
печать (0)
KeyboardInterrupt
Цикл выполняется до тех пор, пока не будет нажата CTRL + C
, но Python также имеет оператор break
, который мы можем использовать непосредственно в нашем коде, чтобы остановить этот тип цикла.
Оператор
break
Этот оператор используется для немедленной остановки цикла. Вы должны думать об этом как о красном «знаке остановки», который вы можете использовать в своем коде, чтобы иметь больший контроль над поведением цикла.
Согласно документации Python:
Операторbreak
, как и в C, вырывается из самого внутреннего охватывающегодля цикла
илиwhile
.
Эта диаграмма иллюстрирует базовую логику оператора break
:
break
Это основная логика оператора break
:
- Цикл while запускается, только если условие оценивается как
Верно
. - Если оператор
break
обнаружен в любой момент во время выполнения цикла, цикл немедленно останавливается. - Иначе, если
break
не найден, цикл продолжает свое обычное выполнение и останавливается, когда условие оценивается какFalse
.
Мы можем использовать break
, чтобы остановить цикл while, когда условие выполняется в определенной точке его выполнения, поэтому вы обычно найдете его в условном операторе, например:
while True:
# Код
если <условие>:
перерыв
# Код
Это немедленно останавливает цикл, если условие Истина
.
💡 Совет: Вы можете (теоретически) написать оператор break
в любом месте тела цикла. Он не обязательно должен быть частью условного оператора, но мы обычно используем его для остановки цикла, когда заданное условие - True
.
Здесь у нас есть пример break
в цикле while True
:
Давайте посмотрим на это более подробно:
Первая строка определяет цикл while True
, который будет выполняться бесконечно до разрыва Обнаружен оператор
(или пока он не будет прерван с помощью CTRL + C
).
while True:
Во второй строке запрашивается ввод данных пользователем. Этот ввод преобразуется в целое число и присваивается переменной user_input
.
user_input = int (input ("Введите целое число:"))
Третья строка проверяет, является ли ввод нечетным.
if user_input% 2! = 0:
Если это так, выводится сообщение Это нечетное число
и оператор break
немедленно останавливает цикл.
отпечаток («Это число нечетное»)
break
Иначе, если ввод четный, печатается сообщение Это четное число
и цикл начинается снова.
print («Это число четное»)
Цикл будет выполняться бесконечно, пока не будет введено нечетное целое число, потому что это единственный способ найти оператор break
.
Здесь у нас есть пример с пользовательским вводом:
Введите целое число: 4
Это число четное
Введите целое число: 6
Это число четное
Введите целое число: 8
Это число четное
Введите целое число: 3
Это число нечетное
>>>
🔸 Вкратце
- Циклы while - это программные структуры, используемые для повторения последовательности операторов, пока условие -
True
.Они останавливаются, когда условие оценивается какFalse
. - Когда вы пишете цикл while, вам нужно внести необходимые обновления в свой код, чтобы убедиться, что цикл в конечном итоге остановится.
- Бесконечный цикл - это цикл, который выполняется бесконечно и останавливается только при внешнем вмешательстве или при обнаружении оператора
break
. - Вы можете остановить бесконечный цикл с помощью
CTRL + C
. - Вы можете намеренно создать бесконечный цикл с
, а True
. - Оператор
break
может использоваться для немедленной остановки цикла while.
Я очень надеюсь, что вам понравилась моя статья и вы нашли ее полезной. Теперь вы знаете, как работать с циклами while в Python.
Следуйте за мной в Twitter @EstefaniaCassN, и если вы хотите узнать больше по этой теме, посмотрите мой онлайн-курс Python Loops and Looping Techniques: Beginner to Advanced.
Python, а цикл
Python использует , а
и ключевые слова для создания условного цикла, с помощью которого выполняется повторное выполнение блока операторов до тех пор, пока заданное логическое выражение не станет истинным.
Ниже приводится синтаксис цикла while.
пока [логическое выражение]: заявление1 заявление2 ... заявлениеN
Ключевое слово Python while имеет условное выражение, за которым следует символ :
, чтобы начать блок с увеличенным отступом.
В этом блоке есть операторы, которые нужно выполнять повторно. Такой блок обычно называют телом цикла.Тело будет выполняться до тех пор, пока условие не станет равным True
. Если и когда окажется, что False
, программа выйдет из цикла.
В следующем примере демонстрируется цикл while.
число = 0
пока число <5:
число = число + 1
print ('число =', число)
число = 1
число = 2
число = 3
число = 4
число = 5
Здесь повторяющийся блок после оператора while включает увеличение значения целочисленной переменной и ее печать. IndentationError: неожиданный отступ
Выход из цикла «Пока»
Используйте ключевое слово break
для выхода из цикла while при определенных условиях.Используйте условие if, чтобы определить, когда выходить из цикла while, как показано ниже.
число = 0
пока число <5:
num + = 1 # num + = 1 совпадает с num = num + 1
print ('число =', число)
if num == 3: # условие перед выходом из цикла
перерыв
Продолжить следующую итерацию
Используйте ключевое слово continue
, чтобы начать следующую итерацию, и пропустите операторы после оператора continue
при некоторых условиях, как показано ниже.
число = 0
пока число <5:
num + = 1 # num + = 1 совпадает с num = num + 1
if num> 3: # условие перед выходом из цикла
Продолжить
print ('число =', число)
Цикл while с блоком else
Блок else
может следовать за циклом и
. Блок else будет выполняться, когда логическое выражение , в то время как цикл
оценивается как False
.
Используйте ключевое слово continue
, чтобы начать следующую итерацию, и пропустите операторы после оператора continue
при некоторых условиях, как показано ниже.
число = 0
пока число <3:
num + = 1 # num + = 1 совпадает с num = num + 1
print ('число =', число)
еще:
print ('еще блок выполнен')
число = 1
число = 2
число = 3
блок else выполнен
Следующая программа Python последовательно принимает число в качестве ввода от пользователя и вычисляет среднее значение, пока пользователь вводит положительное число.Здесь повторяющийся блок (тело цикла) просит пользователя ввести число, складывает его кумулятивно и сохраняет счет, если он неотрицателен.
число = 0
count = 0
сумма = 0
а число> = 0:
num = int (input ('введите любое число .. -1 для выхода:'))
если число> = 0:
count = count + 1 # подсчитывает количество входов
sum = sum + num # это кумулятивное добавление входного числа.
avg = сумма / количество
print ('Всего чисел:', count, ', Среднее:', avg)
Когда пользователь вводит отрицательное число, цикл завершается и отображает среднее значение представленных на данный момент чисел.Ниже приведен пример выполнения приведенного выше кода:
введите любое число .. -1 для выхода: 10
введите любое число .. -1 для выхода: 20
введите любое число .. -1 для выхода: 30
введите любое число .. -1 для выхода: -1
Всего номеров: 3, Среднее: 20,0
.